2017-07-06 4 views
2

自分のデータセットでPCAを実行するためにSciKit-Learnを使用しようとしています。私は現在2,208行と53,741列(機能)を持っています。ですから、私はこのデータセットの次元を減らすためにPCAを使いたいと思っています。私はHands-On Machine Learning with SciKit-Learn and TensorFlow次てるSciKit-Learn:基本的なPCAの混乱

from sklearn.decomposition import PCA 
pca = PCA(n_components=0.95) 
X_reduced = pca.fit_transform(X) 

は、私の知る限り理解し、これは彼らが、合計で、私のデータセット内の分散の95%を説明するように、列の数を減らす必要があります。

今、私はX_reducedに残っているどのように多くの機能(列)を見たい:

X_reduced.shape 
(2208, 1) 

単一機能が私のデータセット内の分散の少なくとも95%を占めているようなので、それが見えます...

1)これは非常に驚くべきことであるので、私は最も重要な寸法が分散状に貢献どのくらい見て:

pca = PCA(n_components = 1) 
X2D = pca.fit_transform(X) 
print pca.explained_variance_ratio_ 

[ 0.98544046] 

だから、それは98.5%です!

このような不思議な次元が何であるかはどのようにしてわかりますか?

2)PCAを実行するときに目標Yの値を含める必要はありませんか?

ありがとうございます!

答えて

2

この「一見不思議な次元」は、実際にはすべての次元の線形結合です。 PCAは元の列スペースから、データの共分散行列の固有ベクトルにまたがるスペースに基底を変更することによって動作します。 PCAにはデータの共分散行列の固有値と固有ベクトルしか必要ないので、Y値は必要ありません。

+0

分散の98.5%が私の次元のこの1つの線形結合によって説明される場合、 'X'の代わりに' X_reduced'を 'X_reduced'を使用するときに期待してはいけませんか?残念ながら、 – bclayman

+1

:http://blog.explainmydata.com/2012/07/should-you-apply-pca-to-your-data.htmlたとえば、雑音の多い機能(人の真の重さと重量の悪い推定値を想像してください)と高度に相関する雑音のない機能を利用することができます。 –

関連する問題