2013-03-12 11 views
19

特定のデータセットの分散が最も大きい次元を特定するには、pcaを使用する必要があります。私はそれを行うためにscikit-learnのpcaを使用していますが、私はpcaメソッドの出力から、分散が最も大きいデータのコンポーネントを特定することはできません。私はこれらの次元を排除することは望まず、それらの次元のみを特定することを覚えておいてください。scikit-learn PCAを使用して分散が最も大きい次元を見つける

私のデータは、それぞれが4次元の150行のデータを持つマトリックスとして編成されています。私は次のようにやっている:

pca = sklearn.decomposition.PCA() 
pca.fit(data_matrix) 

私はpca.explained_variance_ratio_を印刷するとき、それは最高から最低まで注文した分散比率の配列を出力しますが、それは彼らが対応したデータから、どの次元を私に教えてくれありません(私は行列の列の順序を変えようとしましたが、その結果の分散比の配列は同じでした)。 pca.components_を印刷

は、私がの意味を理解することはできませんいくつかの値を(私はPCAの引数として要素の元の数を左に)私の4x4の行列を与える... scikitのマニュアルによると、彼らはする必要があります(固有ベクトルはおそらく?)、それらの値が参照する次元の符号はない。

次元が実際にどちらが元のものかわからないように変更されているため、データを変換することは役に立ちません。

scikitのpcaでこの情報を入手する方法はありますか?ありがとう

+1

components_'' ''の最初の行が最大分散の方向であり、文書の状態として。私はそのことについてはっきりしていないことは完全にはわかりません。 explain_variance_ratio_''の項目は '' components_''の行に対応しています。どのような次元の値が参照されているかはどういう意味ですか? –

+2

私の問題は、データに4つの次元があることを考慮して、2次元の次元だけを分散のままにしたいのであれば、PCAを適用するとデータのどの次元が保持されるのかn_components = 2。たとえば、私のデータの第2次元と第4次元が最も高い分散を持っているとしますが、これはわかりません。私はPCAを適用し、結果からこの情報を得るための何らかの方法を持っていきたいと思います。繰り返しますが、私はデータを変換する必要はありません! –

答えて

17

返されるpca.explained_variance_ratio_は、主成分からの差異です。それらを使用して、pcaによってデータがよりよく変換される次元(コンポーネント)の数を見つけることができます。そのためのしきい値を使用することができます(たとえば、0.5より大きい分散の数を数えます)。その後、使用されたしきい値よりも高い主成分に等しい次元(コンポーネント)の数を使用して、PCAによってデータを変換することができます。これらの次元に縮小されたデータは、元のデータの次元のデータとは異なります。

あなたがこのリンクからのコードを確認することができる:

http://scikit-learn.org/dev/tutorial/statistical_inference/unsupervised_learning.html#principal-component-analysis-pca

+2

問題解決には役立ちますが、解決しません。 PCAでデータを変換し、たとえばn_components = 2を選択すると、元のデータのどの次元が削除されるかを知る必要があります。この場合、2つの次元は削除されますが、どの次元が自分の問題であるかを知ることができます。 –

+13

PCAは次元を削除せず、元のデータから他のものを保持しません。データは元のデータとはまったく異なるいくつかの次元でデータを変換します。 – mad

+4

ええ、あなたは正しいです。私はPCAをもう一度読んできました。あなたが言ったことのために私がしたいことは意味をなさない。さて、私はあなたの答えを受け入れています!ありがとう。 –

関連する問題