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' y svd_solver == 'full', se utiliza la MLE de Minka para suponer la dimensión. El uso de n_components == 'mle' interpretará svd_solver == 'auto' como svd_solver == 'full'.

Si 0 < n_components < 1 y svd_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 y n_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

fit

Ajusta el modelo con X.

fit_transform

Ajusta el modelo con X y aplica la reducción de la dimensionalidad en X.

get_covariance

Calcula la covarianza de los datos con el modelo generativo.

get_params

Obtiene los parámetros para este estimador.

get_precision

Calcula la matriz de precisión de los datos con el modelo generativo.

inverse_transform

Transforma los datos de nuevo a su espacio original.

score

Devuelve el promedio del logaritmo de la verosimilitud de todas las muestras.

score_samples

Devuelve el logaritmo de la verosimilitud de cada muestra.

set_params

Establece los parámetros de este estimador.

transform

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) 

Ejemplos usando sklearn.decomposition.PCA