J'essaie d'exécuter une ACP sur une matrice de dimensions m x n où m est le nombre de caractéristiques et n le nombre d'échantillons.
Supposons que je veuille préserver les entités nf
avec la variance maximale. Avec scikit-learn
je peux le faire de cette façon:
from sklearn.decomposition import PCA
nf = 100
pca = PCA(n_components=nf)
# X is the matrix transposed (n samples on the rows, m features on the columns)
pca.fit(X)
X_new = pca.transform(X)
Maintenant, je reçois une nouvelle matrice X_new
qui a la forme de n x nf. Est-il possible de savoir quelles fonctionnalités ont été supprimées ou conservées?
Merci
Les fonctionnalités que votre objet PCA
a déterminées lors de l'ajustement se trouvent dans pca.components_
. L'espace vectoriel orthogonal à celui couvert par pca.components_
est supprimé.
Veuillez noter que la PCA ne "supprime" ni ne "conserve" aucune de vos fonctionnalités prédéfinies (codées par les colonnes que vous spécifiez). Il les mélange tous (en sommes pondérées) pour trouver les directions orthogonales de la variance maximale.
Si ce n'est pas le comportement que vous recherchez, la réduction de la dimensionnalité de la PCA n'est pas la solution. Pour certaines méthodes simples de sélection des fonctionnalités générales, vous pouvez consulter sklearn.feature_selection
Les entités projetées sur les composants principaux conserveront les informations importantes (axes avec variances maximales) et les axes de largage avec petites variances. Ce comportement ressemble à compression
(pas à éliminer).
Et X_proj
est le meilleur nom de X_new
, car il s'agit de la projection de X
sur principal components
Vous pouvez reconstruire le X_rec
en tant que
X_rec = pca.inverse_transform(X_proj) # X_proj is originally X_new
Ici, X_rec
est proche de X
, mais les informations less important
ont été supprimées par la PCA. On peut donc dire que X_rec
est débruité.
À mon avis, je peux dire que the noise
est rejeté.
La réponse indiquée ci-dessus est incorrecte. Le site sklearn indique clairement que le tableau components_ est trié. il ne peut donc pas être utilisé pour identifier les caractéristiques importantes.
components_: array, [n_components, n_features] Axes principaux dans l'espace des fonctions, représentant les directions de la variance maximale dans les données. Les composants sont triés par explicit_variance_.
http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html