[英]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.