簡體   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