繁体   English   中英

如何在输入数据中添加和改变高斯噪声

[英]How to add and vary Gaussian noise to input data

我有一个时间序列数据,我想在数据输入中添加一个附加的高斯噪声。 我想要做的是我想针对不同级别的噪音测试我的 ML 预测模型。

我发现有两种常见的方法可以添加噪音。

1. 改变标准偏差

例如,我可以更改标准偏差的值,例如 [0.1,0.2,0.3] 来表示不同级别的噪声。

Python 代码将是:

# x is my training data
# mu is the mean
# std is the standard deviation
mu=0.0
std = 0.1
def gaussian_noise(x,mu,std):
    noise = np.random.normal(mu, std, size = x.shape)
    x_noisy = x + noise
    return x_noisy 

2. 改变加入数据的高斯噪声的百分比

例如,我将 5% 的高斯噪声添加到我的数据中,然后将其更改为 10% 等。在这种情况下,Python 代码将如下所示:

mu=0.0
std = 0.05 * np.std(x) # for %5 Gaussian noise
def gaussian_noise(x,mu,std):
    noise = np.random.normal(mu, std, size = x.shape)
    x_noisy = x + noise
    return x_noisy 

我有两个问题:

  1. 在什么基础上可以改变标准偏差?
  2. 向数据添加和改变噪声的更合适方法是什么?

如果我理解正确,你的问题是如何改变标准。 开发噪声水平,无论是绝对单位(0.1、0.2、0.3)、信号百分比还是其他。

我建议使用信噪比作为参数来改变,因为它的使用具有坚实的背景(例如在卡尔曼滤波中)。

所以在 Python 中我会做类似的事情:

sp = np.mean( x**2 ) # Signal Power

for snr in array_of_snr_values: 
      std_n = ( sp / snr )**0.5 # Noise std. deviation
      test_perdictive_model( std_n )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM