sklearn.decomposition
.PCA¶
- class sklearn.decomposition.PCA¶
Análisis de componentes principales (Principal component analysis, PCA).
Reducción lineal de la dimensionalidad mediante la Descomposición del Valor Singular de los datos para proyectarlos a un espacio de menor dimensión. Los datos de entrada se centran pero no se escalan para cada característica antes de aplicar la SVD.
Utiliza la implementación LAPACK de la SVD completa o una SVD truncada aleatorizada por el método de Halko et al. 2009, dependiendo de la forma de los datos de entrada y del número de componentes a extraer.
También puede utilizar la implementación scipy.sparse.linalg ARPACK de la SVD truncada.
Ten en cuenta que esta clase no admite datos dispersos de entrada. Ver
TruncatedSVD
para una alternativa con datos dispersos.Más información en el Manual de usuario.
- Parámetros
- n_componentsint, float o “mle”, default=None
Número de componentes a conservar. Si n_componentes no se establece, se conservan todos los componentes:
n_components == min(n_samples, n_features)
Si
n_components == 'mle'
ysvd_solver == 'full'
, se utiliza la MLE de Minka para suponer la dimensión. El uso den_components == 'mle'
interpretarásvd_solver == 'auto'
comosvd_solver == 'full'
.Si
0 < n_components < 1
ysvd_solver == 'full'
, selecciona el número de componentes tal que la cantidad de varianza que debe explicarse sea mayor que el porcentaje especificado por n_components.Si
svd_solver == 'arpack'
, el número de componentes debe ser estrictamente menor que el mínimo de n_features y n_samples.Por lo tanto, el caso Ninguno(None) resulta en:
n_components == min(n_samples, n_features) - 1
- copybool, default=True
Si es False, los datos pasados para el ajuste se sobrescriben y la ejecución de fit(X).transform(X) no producirá los resultados esperados, utiliza fit_transform(X) en su lugar.
- whitenbool, default=False
Cuando es True (False por defecto) los vectores
components_
se multiplican por la raíz cuadrada de n_samples y luego se dividen por los valores singulares para asegurar salidas no correlacionadas con varianzas unitarias de los componentes.El whitening eliminará parte de la información de la señal transformada (las escalas de varianza relativas de los componentes), pero a veces puede mejorar la precisión predictiva de los estimadores posteriores al hacer que los datos respeten algunos supuestos fijos.
- svd_solver{“auto”, “full”, “arpack”, “randomized”}, default=”auto”
- Si es auto :
El solucionador es seleccionado mediante una política por defecto basada en
X.shape
yn_components
: si los datos de entrada son mayores de 500x500 y el número de componentes a extraer es inferior al 80% de la dimensión más pequeña de los datos, entonces se habilita el método “randomized” más eficiente. En caso contrario, se calcula la SVD completa exacta y, opcionalmente, se trunca después.- Si es full :
ejecuta la SVD completa exacta llamando al solucionador estándar LAPACK a través de
scipy.linalg.svd
y selecciona los componentes mediante postprocesamiento- Si es arpack :
ejecuta la SVD truncada a n_components llamando al solucionador ARPACK mediante
scipy.sparse.linalg.svds
. Requiere estrictamente 0 < n_components < min(X.shape)- Si es randomized :
ejecuta la SVD aleatorizada por el método de Halko et al.
Nuevo en la versión 0.18.0.
- tolfloat, default=0.0
Tolerancia para los valores singulares calculados por svd_solver == “arpack”. Debe estar en el rango [0.0, infinito).
Nuevo en la versión 0.18.0.
- iterated_powerentero o “auto”, default=”auto”
Número de iteraciones para el método de potencia calculado por svd_solver == “randomized”. Debe estar en el rango [0, infinito).
Nuevo en la versión 0.18.0.
- random_stateentero, instancia de RandomState o None, default=None
Se emplea cuando se utilizan los solucionadores “arpack” o “randomized”. Pasa un entero(int) para obtener resultados reproducibles a través de múltiples llamadas a la función. Ver Glosario.
Nuevo en la versión 0.18.0.
- Atributos
- components_ndarray de forma (n_components, n_features)
Ejes principales en el espacio de características, que representan las direcciones de máxima varianza en los datos. Los componentes se ordenan por
explained_variance_
.- explained_variance_ndarray de forma (n_components,)
La cantidad de varianza explicada por cada uno de los componentes seleccionados.
Igual a n_components autovalores más grandes de la matriz de covarianza de X.
Nuevo en la versión 0.18.
- explained_variance_ratio_ndarray de forma (n_components,)
Porcentaje de la varianza explicada por cada uno de los componentes seleccionados.
Si no se establece
n_components
, se almacenan todos los componentes y la suma de las razones es igual a 1,0.- singular_values_ndarray de forma (n_components,)
Los valores singulares correspondientes a cada uno de los componentes seleccionados. Los valores singulares son iguales a las 2-normas de las variables
n_componentes
en el espacio de dimensión inferior.Nuevo en la versión 0.19.
- mean_ndarray de forma (n_features,)
Media empírica por característica, estimada a partir del conjunto de entrenamiento.
Igual a
X.mean(axis=0)
.- n_components_int
El número estimado de componentes. Cuando n_components se establece como “mle” o un número entre 0 y 1 (con svd_solver == “full”) este número se estima a partir de los datos de entrada. De lo contrario, es igual al parámetro n_components, o el valor menor de n_features y n_samples si n_components es None.
- n_features_int
Número de características en los datos de entrenamiento.
- n_samples_int
Número de muestras en los datos de entrenamiento.
- noise_variance_float
La covarianza del ruido estimada según el modelo de PCA probabilístico de Tipping y Bishop 1999. Ver «Pattern Recognition and Machine Learning» de C. Bishop, 12.2.1 p. 574 o http://www.miketipping.com/papers/met-mppca.pdf. Es necesario para calcular la covarianza estimada de los datos y las puntuaciones muestrales.
Igual al promedio de (min(n_features, n_samples) - n_components) autovalores más pequeños de la matriz de covarianza de X.
Ver también
KernelPCA
Análisis de componentes principales basado en Kernel.
SparsePCA
Análisis de Componentes Principales Disperso.
TruncatedSVD
Reducción de la dimensionalidad usando la SVD truncada.
IncrementalPCA
Análisis de Componentes Principales Incremental.
Referencias
Para n_components == “mle”, esta clase utiliza el método de Minka, T. P. «Automatic choice of dimensionality for PCA». En NIPS, pp. 598-604
Implementa el modelo probabilístico PCA de: Tipping, M. E., y Bishop, C. M. (1999). «Probabilistic principal component analysis». Journal of the Royal Statistical Society: Series B (Statistical Methodology), 61(3), 611-622. a través de los métodos score y score_samples. Ver http://www.miketipping.com/papers/met-mppca.pdf
Para svd_solver == “arpack”, consulta
scipy.sparse.linalg.svds
.Para svd_solver == “randomized”, ver: Halko, N., Martinsson, P. G., y Tropp, J. A. (2011). «Finding structure with randomness: Probabilistic algorithms for constructing approximate matrix decompositions». SIAM review, 53(2), 217-288. y también Martinsson, P. G., Rokhlin, V., y Tygert, M. (2011). «A randomized algorithm for the decomposition of matrices». Applied and Computational Harmonic Analysis, 30(1), 47-68.
Ejemplos
>>> import numpy as np >>> from sklearn.decomposition import PCA >>> X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]]) >>> pca = PCA(n_components=2) >>> pca.fit(X) PCA(n_components=2) >>> print(pca.explained_variance_ratio_) [0.9924... 0.0075...] >>> print(pca.singular_values_) [6.30061... 0.54980...]
>>> pca = PCA(n_components=2, svd_solver='full') >>> pca.fit(X) PCA(n_components=2, svd_solver='full') >>> print(pca.explained_variance_ratio_) [0.9924... 0.00755...] >>> print(pca.singular_values_) [6.30061... 0.54980...]
>>> pca = PCA(n_components=1, svd_solver='arpack') >>> pca.fit(X) PCA(n_components=1, svd_solver='arpack') >>> print(pca.explained_variance_ratio_) [0.99244...] >>> print(pca.singular_values_) [6.30061...]
Métodos
Ajusta el modelo con X.
Ajusta el modelo con X y aplica la reducción de la dimensionalidad en X.
Calcula la covarianza de los datos con el modelo generativo.
Obtiene los parámetros para este estimador.
Calcula la matriz de precisión de los datos con el modelo generativo.
Transforma los datos de nuevo a su espacio original.
Devuelve el promedio del logaritmo de la verosimilitud de todas las muestras.
Devuelve el logaritmo de la verosimilitud de cada muestra.
Establece los parámetros de este estimador.
Aplica la reducción de la dimensionalidad a X.
- fit()¶
Ajusta el modelo con X.
- Parámetros
- Xarray-like de forma (n_samples, n_features)
Datos de entrenamiento, donde n_samples es el número de muestras y n_features es el número de características.
- yIgnorado
- Devuelve
- selfobject
Devuelve la instancia de sí misma.
- fit_transform()¶
Ajusta el modelo con X y aplica la reducción de la dimensionalidad en X.
- Parámetros
- Xarray-like de forma (n_samples, n_features)
Datos de entrenamiento, donde n_samples es el número de muestras y n_features es el número de características.
- yIgnorado
- Devuelve
- X_newndarray de forma (n_samples, n_components)
Valores transformados.
Notas
Este método devuelve un arreglo ordenado en Fortran. Para convertirlo en un arreglo ordenado en C, utiliza “np.ascontiguousarray”.
- get_covariance()¶
Calcula la covarianza de los datos con el modelo generativo.
cov = components_.T * S**2 * components_ + sigma2 * eye(n_features)
donde S**2 contiene las varianzas explicadas, y sigma2 contiene las varianzas del ruido.- Devuelve
- covarreglo, forma=(n_features, n_features)
Covarianza estimada de los datos.
- get_params()¶
Obtiene los parámetros para este estimador.
- Parámetros
- deepbool, default=True
Si es True, devolverá los parámetros para este estimador y los subobjetos contenidos que son estimadores.
- Devuelve
- paramsdict
Nombres de parámetros mapeados a sus valores.
- get_precision()¶
Calcula la matriz de precisión de los datos con el modelo generativo.
Es igual a la inversa de la covarianza, pero calculada con el lema de inversión de matrices por eficiencia.
- Devuelve
- precisionarreglo, forma=(n_features, n_features)
Precisión estimada de los datos.
- inverse_transform()¶
Transforma los datos de nuevo a su espacio original.
En otras palabras, devuelve una entrada X_original cuya transformación sería X.
- Parámetros
- Xarray-like, forma (n_samples, n_components)
Nuevos datos, donde n_samples es el número de muestras y n_components es el número de componentes.
- Devuelve
- X_original array-like, forma (n_samples, n_features)
Notas
Si whitening está activado, inverse_transform calculará la operación inversa exacta, que incluye la inversión del whitening.
- score()¶
Devuelve el promedio del logaritmo de la verosimilitud de todas las muestras.
Ver «Pattern Recognition and Machine Learning» por C. Bishop, 12.2.1 p. 574 or http://www.miketiping.com/papers/met-mppca.pdf
- Parámetros
- Xarray-like de forma (n_samples, n_features)
Los datos.
- yIgnorado
- Devuelve
- llfloat
Logaritmo de la verosimilitud promedio de las muestras según el modelo actual.
- score_samples()¶
Devuelve el logaritmo de la verosimilitud de cada muestra.
Ver «Pattern Recognition and Machine Learning» por C. Bishop, 12.2.1 p. 574 or http://www.miketiping.com/papers/met-mppca.pdf
- Parámetros
- Xarray-like de forma (n_samples, n_features)
Los datos.
- Devuelve
- llndarray de forma (n_samples,)
Logaritmo de la verosimilitud de cada muestra según el modelo actual.
- set_params()¶
Establece los parámetros de este estimador.
El método funciona en estimadores simples como en objetos anidados (como
Pipeline
). Estos últimos tienen parámetros de la forma<component>__<parameter>
para que sea posible actualizar cada componente de un objeto anidado.- Parámetros
- **paramsdict
Parámetros del estimador.
- Devuelve
- selfinstancia de estimador
Instancia del estimador.
- transform()¶
Aplica la reducción de la dimensionalidad a X.
X se proyecta sobre los primeros componentes principales extraídos previamente de un conjunto de entrenamiento.
- Parámetros
- Xarray-like, forma (n_samples, n_features)
Nuevos datos, donde n_samples es el número de muestras y n_features es el número de características.
- Devuelve
- X_newarray-like, forma (n_samples, n_components)
Ejemplos
>>> import numpy as np >>> from sklearn.decomposition import IncrementalPCA >>> X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]]) >>> ipca = IncrementalPCA(n_components=2, batch_size=3) >>> ipca.fit(X) IncrementalPCA(batch_size=3, n_components=2) >>> ipca.transform(X)