Estoy intentando ejecutar un PCA en una matriz de dimensiones mxn donde m es el número de características y n el número de muestras.
Supongamos que quiero conservar las características nf
con la varianza máxima. Con scikit-learn
puedo hacerlo de esta manera:
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)
Ahora, obtengo una nueva matriz X_new
que tiene una forma de nx nf. ¿Es posible saber qué características han sido descartadas o cuáles han sido retenidas?
Gracias
Las características que su objeto PCA
ha determinado durante el ajuste están en pca.components_
. El espacio vectorial ortogonal al que abarca pca.components_
se descarta.
Tenga en cuenta que PCA no “descarta” ni “retiene” ninguna de sus funciones predefinidas (codificadas por las columnas que especifique). Mezcla todos ellos (por sums ponderadas) para encontrar direcciones ortogonales de varianza máxima.
Si este no es el comportamiento que está buscando, entonces la reducción de la dimensionalidad de PCA no es el camino a seguir. Para algunos métodos simples de selección de características generales, puede echar un vistazo a sklearn.feature_selection
Las características proyectadas en los componentes principales conservarán la información importante (ejes con variaciones máximas) y los ejes de caída con variaciones pequeñas. Este comportamiento es similar a la compression
(no descartado).
Y X_proj
es el mejor nombre de X_new
, porque es la proyección de X
en los principal components
Puedes reconstruir el X_rec
como
X_rec = pca.inverse_transform(X_proj) # X_proj is originally X_new
Aquí, X_rec
está cerca de X
, pero la información less important
fue eliminada por PCA. Así que podemos decir que X_rec
está sin X_rec
.
En mi opinión, puedo decir que the noise
es descartado.
La respuesta marcada arriba es incorrecta. El sitio de sklearn indica claramente que la matriz de componentes está ordenada. por lo que no se puede utilizar para identificar las características importantes.
components_: array, [n_components, n_features] Ejes principales en el espacio de características, que representan las direcciones de variación máxima en los datos. Los componentes están ordenados por explicación_varianza_.
http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html