Je veux les corrélations entre les variables individuelles et les principaux composants en python. J'utilise PCA dans sklearn. Je ne comprends pas comment puis-je obtenir la matrice de chargement après avoir décomposé mes données? Mon code est ici.
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 ne mentionne pas comment cela peut être réalisé.
Je pense que @RickardSjogren décrit les vecteurs propres, tandis que @BigPanda donne les chargements. Il y a une grande différence: Chargements vs vecteurs propres dans PCA: quand utiliser l'un ou l'autre? .
J'ai créé cette classe PCA avec une méthode loadings
.
Les charges, telles que données par pca.components_ * np.sqrt(pca.explained_variance_)
, sont plus analogues aux coefficients dans une régression linéaire multiple. Je n'utilise pas .T
ici car dans la classe PCA liée ci-dessus, les composants sont déjà transposés. numpy.linalg.svd
produit u, s, and vt
, où vt
est la transposition hermétienne, vous devez donc d'abord revenir dans v
avec vt.T
.
Il y a aussi un autre détail important: les signes (positifs/négatifs) sur les composants et les chargements dans sklearn.PCA
peut différer des packages tels que R. Plus d'informations ici:
Dans sklearn.decomposition.PCA, pourquoi les composants_ sont-ils négatifs? .
Multipliez chaque composant par la racine carrée de sa valeur propre correspondante:
pca.components_.T * np.sqrt(pca.explained_variance_)
Cela devrait produire votre matrice de chargement.
Selon ce blog les rangées de pca.components_
sont les vecteurs de chargement. Alors:
loadings = pca.components_