自分のデータセットで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
の値を含める必要はありませんか?
ありがとうございます!
分散の98.5%が私の次元のこの1つの線形結合によって説明される場合、 'X'の代わりに' X_reduced'を 'X_reduced'を使用するときに期待してはいけませんか?残念ながら、 – bclayman
:http://blog.explainmydata.com/2012/07/should-you-apply-pca-to-your-data.htmlたとえば、雑音の多い機能(人の真の重さと重量の悪い推定値を想像してください)と高度に相関する雑音のない機能を利用することができます。 –