Cómo utilizar el PCA de scikit-learn para reducir las funciones y saber qué funciones se descartan

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