2017-07-12 8 views
1

私はPython上にあるデータセットの多変量ガウス密度関数を計算したい。私のデータセットは21の変数と75のデータポイントを持っています。エラーが発生したscipy.stats.multivariate_normal.pdfを使用している場合:オペランドを図形(1,8)(21)と一緒にブロードキャストできませんでした

これは21 * 21の配列である共分散行列(cov)と形状(21)を持つ平均配列mを計算しました。このscipy関数を使用するために必要なもう1つの入力は、Quantiles(配列のようなもの)で、xの最後の軸はコンポーネントを表します。

分位数が何を指しているのか分かりません。

私はquantiles = np.array([0.0、0.01、0.05、0.1、1-0.10、1-0.05、1-0.01、1.0])として関数の入力を書きましたが、 ValueError:私は、

エラーがあるscipy.stats.multivariate_normal.pdf(分位、M、COV)を計算オペランドが形状(1,8)と一緒に放送することができなかった(21)

誰でもでし助けて??

答えて

1

文書では、最後の軸に実際のランダムなベクトルがかなり理解できない方法で含まれていることを尋ねてきます。x次のコードは動作します:

import numpy as np 
from scipy.stats import multivariate_normal 


mean = np.array([0.5, 0.1, 0.3]) 
cov = np.array([[0.1, 0.0, 0.0], [0.0, 1.5, 0.0], [0.0, 0.0, 0.9]]) 
x = np.random.uniform(size=(100, 3)) 
y = multivariate_normal.pdf(x, mean=mean, cov=cov) 
print(y) 

だから、最初の次元(行ごと)に、それはあなたのデータベクトルが含まれているxようにあなたのデータ行列を構築します。 2番目の次元(列)は21個の別々の変数を構成します。したがって、基本的には、データを(75,21)サイズの行列に挿入する必要があります。平均ベクトルと共分散行列の項目が正しい変数に対応していることを確認します。