我創建了一個n值從0到2pi的數組。現在,我想生成偏離正態分佈的sin(x)的n個測試數據點。用正態分佈噪聲和平均函數生成數據
所以我想我需要做這樣的事情:t = sin(x) + noise
。噪音必須是這樣的:noise = np.random.randn(mean, std)
。
但是,我不知道當我的意思是sin(x)(而不是常數)時我怎麼能計算出噪音。
我創建了一個n值從0到2pi的數組。現在,我想生成偏離正態分佈的sin(x)的n個測試數據點。用正態分佈噪聲和平均函數生成數據
所以我想我需要做這樣的事情:t = sin(x) + noise
。噪音必須是這樣的:noise = np.random.randn(mean, std)
。
但是,我不知道當我的意思是sin(x)(而不是常數)時我怎麼能計算出噪音。
numpy.random.randn
的參數不是均值和標準差。爲此,您需要numpy.random.normal
。它的簽名是
normal(loc=0.0, scale=1.0, size=None)
要添加噪聲的正弦函數,只需使用的0均值在normal()
呼叫。平均相當於loc
參數(即「地利」),默認爲0,所以,考慮到x
是像np.linspace(0, 2*np.pi, n)
,你可以這樣做:
t = np.sin(x) + np.random.normal(scale=std, size=n)
您可能使用numpy.random.randn
,但你必須通過std
規模,因爲從標準正態分佈randn
回報樣本,均值爲0,標準偏差1.要使用randn
,你可以這樣寫:
t = np.sin(x) + std * np.random.randn(n)
如果將噪聲添加到y
座標中,某些測試數據點的值可能超出正弦函數的正常範圍,即不是從-1到1,而是從 - (1 +噪聲)到+(1 +噪聲)。我建議加上噪音的x
座標:
t = np.sin(x + np.random.uniform(-noise, noise, x.shape))
其中noise
必須是一個合適的值給你的問題。