2

ガウス分布から乱数を生成しようとしています。Python には非常に便利なrandom.gauss()方法がありますが、これは 1 次元の確率変数にすぎません。n次元のこの分布からプログラムで乱数を生成するにはどうすればよいですか?

たとえば、2 次元では、このメソッドの戻り値は基本的に平均からの距離であるため、実際のデータ ポイントを決定するには (x,y) 座標が必要です。あと 2 つの乱数を生成できると思いますが、制約の設定方法がわかりません。

洞察に感謝します。ありがとう!

4

4 に答える 4

5

Numpy には、random モジュールの関数に相当する多次元があります。

あなたが探している関数は numpy.random.normal です

于 2010-06-03T20:43:17.257 に答える
4

関数を使用してこれを行うことができますnp.random.multivariate_normal()。2 次元データだけでなく、任意の数の次元に対して機能します。

たとえば、点 (1,3) を中心に 100 個の 2 次元の点が必要な場合は、次のようにします。

mean = [1, 3]
cov = [[8, -5], [0.2, 0.2]]
x, y = np.random.multivariate_normal([0, 2], cov, 100).T

そして、ポイント (1,10,100) を中心とする 100 個の 3 次元ポイントに対して、これを行うことができます。

mean = [1, 10, 100]
cov = [[1,1,1], [1,1,1], [1,1,1]]
x, y, z = np.random.multivariate_normal(mean, cov, 100).T

詳細については、ここにドキュメントがありますが、私に尋ねることもできます。http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.multivariate_normal.html

于 2015-11-26T23:56:21.983 に答える
1

多次元分布を 1 次元分布の構成に適切に分解する必要があります。たとえば、特定の中心からガウス分布した距離にある点と、その周りに均一に分布した角度が必要な場合は、ガウス ローと均一なシータ (0 から 2 の間) でデルタの極座標を取得します。 pi)、デカルト座標が必要な場合は、もちろん座標変換を行います。

于 2010-06-03T20:45:05.987 に答える
0

Multivariate Normal Distributionを求めているようです。その分布から値を生成するには、x と y の関係を表す共分散行列が必要です。あなたの x と y はどのように関連していますか? x と y が独立している場合、random.gauss() で 2 つの値を生成できます。

共分散行列がわからない場合は、ソフトウェアの問題に取り掛かる前に解決しなければならない数学の問題があります。モデル化しようとしているものについてより多くの情報を提供していただければ、お役に立てるかもしれません (そして、Alex Martelli が一般的なモデルのいくつかのソリューションを投稿したようです)。

于 2010-06-03T20:57:50.167 に答える