n個の値が0〜2piのnumpy配列を作成しました。今、正規分布したsin(x)から逸脱したn個のテストデータ点を生成したい。正規分布のノイズと平均関数を持つデータを生成する
だから私はこのような何かをする必要があると思った:t = sin(x) + noise
。ノイズがこのようなものでなければならないところ:noise = np.random.randn(mean, std)
。
しかし、平均がsin(x)(定数ではない)のときのノイズを計算する方法はわかりません。
n個の値が0〜2piのnumpy配列を作成しました。今、正規分布したsin(x)から逸脱したn個のテストデータ点を生成したい。正規分布のノイズと平均関数を持つデータを生成する
だから私はこのような何かをする必要があると思った:t = sin(x) + noise
。ノイズがこのようなものでなければならないところ:noise = np.random.randn(mean, std)
。
しかし、平均がsin(x)(定数ではない)のときのノイズを計算する方法はわかりません。
numpy.random.randn
への引数は平均と標準偏差ではありません。そのためには、numpy.random.normal
が必要です。その署名は、単にnormal()
の呼び出しで0の平均値を使用し、あなたの罪関数にノイズを追加するには
normal(loc=0.0, scale=1.0, size=None)
です。平均はx
がnp.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)
ノイズをy
座標に追加すると、テストデータポイントの一部が正弦関数の通常の範囲外、つまり-1から1ではなく、 - (1 +ノイズ)から+(1 +ノイズ)。
noise
はあなたの問題への適切な値でなければなりません
t = np.sin(x + np.random.uniform(-noise, noise, x.shape))
を:私は座標x
にノイズを追加することをお勧めします。