web-dev-qa-db-ja.com

scikit-learn PCAを使用して分散が最も高い次元を見つける

Pcaを使用して、特定のデータセットの分散が最も高いディメンションを特定する必要があります。 scikit-learnのpcaを使用してそれを行っていますが、pcaメソッドの出力から、最も分散が大きいデータのコンポーネントを特定できません。それらの次元を排除したくはないので、それらを特定するだけでよいことに注意してください。

私のデータは、150行のデータを持つマトリックスとして構成されています。各行は4次元です。私は次のようにしています:

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

pca.explained_variance_ratio _を出力すると、分散比の配列が最高から最低の順に出力されますが、対応するデータの次元はわかりません(順序を変更してみました私の行列の列の数、および結果の分散比配列は同じでした)。

印刷pca.components _は、4x4マトリックスを与えます(元のコンポーネント数を引数としてpcaに残しました)いくつかの値がわかりません... scikitのドキュメントによると、それらは最大の分散を持つコンポーネント(固有ベクトルでしょうか?)ですが、これらの値がどの次元を参照しているかの兆候はありません。

データを変換しても効果がありません。ディメンションが変更されているため、元々どのディメンションであるのか本当にわかりません。

Scikitのpcaでこの情報を取得する方法はありますか?ありがとう

22
Alberto A

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

このリンクからコードを確認できます:

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

19
mad