2017-01-25 4 views
2

私は3D分布を生成しようとしています。x, yはサーフェス平面を表し、zはある範囲の値の大きさです。3Dガウスデータの生成

私はnumpy's multivariate_normalを見ていますが、多くのサンプルを取得できます。私はいくつかのx, y座標を指定する機能を望み、zの値を返す必要があります。だから私はgp(x, y)を照会して、平均と共分散に従うz値を返すことができます。

おそらく、より具体的な(おもちゃの)例:ガウスプロセスとしてモデル化できる温度分布があるとします。だから私は(0, 0)に平均気温20、ある程度共分散しているかもしれません。[[1, 0], [0, 1]]。私は別のx, yの場所でクエリを実行してその位置の温度を取得できるモデルを作成できるようにしたいと考えています((5, 5)で7度のようなものが戻ってくるかもしれません)。

最高の達成方法

+1

与えられたので、あなたの代わりに、サンプルの確率密度関数をしたいですか? –

答えて

0

scipy.stats.multivariate_normalを使用すると、多変量の法線を作成できます。そして、あなたは(あなたがzと呼ばれる)確率を表すpdf

>>> dist.pdf([2,3]) 
0.15915494309189535 
>>> dist.pdf([1,1]) 
0.013064233284684921 

を使用することができますp(x,y)見つける

>>> import scipy.stats 
>>> dist = scipy.stats.multivariate_normal(mean=[2,3], cov=[[1,0], 
                  [0,1]]) 

任意の[x,y]

+0

これはおそらく私の理解の欠如かもしれません:PDFは私が探しているものに似ているようですが、x、yの0-1確率よりも、ガウス曲線のようなものがほしいでしょう実際のデータ点を得るためにサンプリングすることができます。 – Teknophilia

1

私は、あなたのデータはnはあなたが持っているデータポイントの数である私は、形状X.shape = (n,2)で、私のコードでXように参照する単一np.array、にコピーすることができ、あなたがn = 1を持つことができることを前提と一度に1つのポイントをテストしたい場合2はもちろん、座標(xy)ベースの2次元空間を指します。次に、: - つまり、与えられたデータポイントは、あなたがそれらのポイント(またはシングルポイント)で、ガウス関数の値を取得します

def estimate_gaussian(X): 
    return X.mean(axis=0), np.cov(X.T) 

def mva_gaussian(X, mu, sigma2): 
    k = len(mu) 
    # check if sigma2 is a vector and, if yes, use as the diagonal of the covariance matrix 
    if sigma2.ndim == 1 : 
    sigma2 = np.diag(sigma2) 
    X = X - mu 
    return (2 * np.pi)**(-k/2) * np.linalg.det(sigma2)**(-0.5) * \ 
    np.exp(-0.5 * np.sum(np.multiply(X.dot(np.linalg.inv(sigma2)), X), axis=1)).reshape((X.shape[0], 1)) 

は、あなたがやりたいだろう。この関数は多変量ガウス関数を記述できるため、実際には必要なものの一般化されたバージョンです。あなたはk = 2ケースと対角共分散行列sigma2に興味があるようです。

また、これは確率分布でもあります。あなたが望んでいないと言います。私たちは、あなたが適合しようとしているものが何であるかを知るための十分な情報を持っていません(つまり、ガウス関数の3つのパラメータが期待されるものです。通常、人々は正規分布に興味があります)。それにもかかわらず、mva_gaussian関数のreturn文のパラメータを必要に応じて変更するだけで、正規化された分布を望まない場合は、estimate gaussian関数を無視してもかまいません(正規化された関数でも、温度 - あなたが正規化プロセスを知っている限り:-))。

+1

あなたのニーズに合わせて自分の答えを編集しました。あなたが適合しようとしているものを知ることは不可能ですが、それが正規化された分布関数を書いた理由です。しかし、今では、温度分布に合わせて関数のパラメータを変更することができます。 – id5h

関連する問題