web-dev-qa-db-ja.com

sklearnを使用した因子負荷

Pythonの個々の変数と主成分の間の相関関係が必要です。 PCAをsklearnで使用しています。データを分解した後、どのようにしてローディングマトリックスを達成できるのかわかりません。私のコードはここにあります。

iris = load_iris()
data, y = iris.data, iris.target
pca = PCA(n_components=2)
transformed_data = pca.fit(data).transform(data)
eigenValues = pca.explained_variance_ratio_

http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html は、これをどのようにして実現できるかについて言及していません。

24
Riyaz

@RickardSjogrenが固有ベクトルを記述しているのに対し、@ BigPandaが負荷を与えていると思います。大きな違いがあります: PCAの読み込みと固有ベクトル:どちらを使用するか?

私は このPCAクラスloadingsメソッドで作成しました。

pca.components_ * np.sqrt(pca.explained_variance_)で与えられるローディングは、多重線形回帰の係数により類似しています。上記でリンクしたPCAクラスでは、コンポーネントがすでに転置されているため、ここでは.Tを使用しません。 numpy.linalg.svdu, s, and vtを生成します。ここで、vtはエルメシアン転置であるため、最初にvt.Tを使用してvに戻る必要があります。

その他の重要な詳細がもう1つあります。コンポーネントの記号(正/負)とsklearn.PCAの読み込みは、Rなどのパッケージとは異なる場合があります。詳細はこちら:

sklearn.decomposition.PCAで、components_が否定的である理由

13
Brad Solomon

各コンポーネントに、対応する固有値の平方根を乗算します。

pca.components_.T * np.sqrt(pca.explained_variance_)

これにより、ローディングマトリックスが生成されます。

15
BigPanda

このブログ によると、pca.components_の行は読み込みベクトルです。そう:

loadings = pca.components_
10
RickardSjogren