[英]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
我有两个问题:
如果我理解正确,你的问题是如何改变标准。 开发噪声水平,无论是绝对单位(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.