2016-09-16 5 views
2

n個の値が0〜2piのnumpy配列を作成しました。今、正規分布したsin(x)から逸脱したn個のテストデータ点を生成したい。正規分布のノイズと平均関数を持つデータを生成する

だから私はこのような何かをする必要があると思った:t = sin(x) + noise。ノイズがこのようなものでなければならないところ:noise = np.random.randn(mean, std)

しかし、平均がsin(x)(定数ではない)のときのノイズを計算する方法はわかりません。

答えて

2

numpy.random.randnへの引数は平均と標準偏差ではありません。そのためには、numpy.random.normalが必要です。その署名は、単にnormal()の呼び出しで0の平均値を使用し、あなたの罪関数にノイズを追加するには

normal(loc=0.0, scale=1.0, size=None) 

です。平均はxnp.linspace(0, 2*np.pi, n)のようなものであることを考えると、デフォルトではそうは0であるloc引数(すなわち「場所」)に対応して、あなたがこれを行うことができます:

t = np.sin(x) + np.random.normal(scale=std, size=n) 

あなたはでき使用numpy.random.randn、しかし、あなたは平均0、標準偏差1の標準正規分布からrandn戻っサンプルは、randnを使用するので、stdことによってそれを拡張する必要があり、次のように記述します。

t = np.sin(x) + std * np.random.randn(n) 
1

ノイズをy座標に追加すると、テストデータポイントの一部が正弦関数の通常の範囲外、つまり-1から1ではなく、 - (1 +ノイズ)から+(1 +ノイズ)。

noiseはあなたの問題への適切な値でなければなりません
t = np.sin(x + np.random.uniform(-noise, noise, x.shape)) 

を:私は座標xにノイズを追加することをお勧めします。

関連する問題