2016-04-03 18 views
4

Sklearn PCAはpca.components_ローディングですか?私はそれが確かだと確信していますが、私は研究論文に従うことを試みており、私はその負荷から異なる結果を得ています。私はSklearnのドキュメントの中でそれを見つけることができません。Sklearn PCAはpca.components_ローディングですか?

答えて

6

pca.components_は、データを投影する空間の直交基底です。形状は(n_components, n_features)です。 100サンプルと50次元(フィーチャとも呼ばれる)のデータセットの最初の3つのコンポーネント(3Dスキャッタプロットを行うなど)のみを保持する場合は、pca.components_の形状は(3, 50)になります。

"ローディング"とは、各サンプルがコンポーネントにまたがるベクトル空間に投影された結果だと思います。それらはpca.fit(X_train)を呼び出した後にpca.transform(X_train)に電話することによって得ることができます。結果は、形状が(n_samples, n_components)、前の例では(100, 3)になります。

+0

Transformはドキュメンテーションに従って次元削減を適用するので、私のベクトルはcomponentsとは異なる形をしています。私は紙とその1つを具体的に複製しようとしていますhttp://ftp.utdallas.edu/~herve/Abdi- rotations-pretty.pdfバライマックスローテーションを実行するにはローディングが必要です。そのため、各コンポーネントに対応する変数を持つテーブルを作成することができます。 –

+0

次元を小さくしたくない場合は、 'n_components = n_features'をPCAコンストラクタに渡すことができます(これは私が思うのはデフォルトです)。そしてtransformへの呼び出しの結果は'(n_samples、n_features) '同様に( 'n_samples> n_features 'と仮定します)。 「読み込み」の単位を変更するかどうかを決定するために、 'whiten = True'または' whiten = False'(PCAコンストラクタ)を渡すこともできます。 – ogrisel

+0

変換の仕組みの詳細が必要な場合は、クラスのソースコードをお読みください。複雑ではありません。 https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/decomposition/ pca.py – ogrisel

関連する問題