sklearn.decomposition
.TruncatedSVD¶
- class sklearn.decomposition.TruncatedSVD¶
Reducción de dimensionalidad usando la SVD truncada (también conocida como LSA).
Este transformador realiza una reducción lineal de la dimensionalidad mediante la descomposición del valor singular (SVD) truncada. A diferencia del PCA, este estimador no centra los datos antes de calcular la descomposición del valor singular. Esto significa que puede trabajar con matrices dispersas de forma eficiente.
En particular, la SVD truncada funciona en matrices de recuento de términos/tf-idf tal y como las devuelven los vectorizadores de
sklearn.feature_extraction.text
. En ese contexto, se conoce como análisis semántico latente (LSA).Este estimador soporta dos algoritmos: un solucionador SVD aleatorizado rápido y un algoritmo «ingenuo» (naive) que utiliza ARPACK como método de obtención de autovalores en
X * X.T
oX.T * X
lo que sea más eficiente.Más información en el Manual de usuario.
- Parámetros
- n_componentsint, default=2
Dimensionalidad deseada de los datos de salida. Debe ser estrictamente menor que el número de características. El valor predeterminado es útil para la visualización. Para LSA, se recomienda un valor de 100.
- algorithm{“arpack”, “randomized”}, default=”randomized”
Solucionador SVD a utilizar. Ya sea «arpack» para el envoltorio de ARPACK en SciPy (scipy.sparse.linalg.svds), o bien «randomized» para el algoritmo aleatorizado debido a Halko (2009).
- n_iterint, default=5
Número de iteraciones para el solucionador SVD aleatorizado. No es utilizado por ARPACK. El valor predeterminado es mayor que el valor por defecto en
randomized_svd
para manejar matrices dispersas que pueden tener un gran espectro que decae lentamente.- random_stateint, instancia de RandomState o None, default=None
Se utiliza durante el svd aleatorizado. Pasa un entero (int) para obtener resultados reproducibles a través de múltiples llamadas a la función. Ver Glosario.
- tolfloat, default=0.
Tolerancia para ARPACK. 0 significa precisión de máquina. Ignorado por el solucionador SVD aleatorizado.
- Atributos
- components_ndarray de forma (n_components, n_features)
- explained_variance_ndarray de forma (n_components,)
La varianza de las muestras de entrenamiento transformada por una proyección a cada componente.
- explained_variance_ratio_ndarray de forma (n_components,)
Porcentaje de la varianza explicada por cada uno de los componentes seleccionados.
- 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.
Ver también
Notas
SVD sufre de un problema llamado «indeterminación de signos», lo que significa que el signo de los
components_
y la salida de la transformación dependen del algoritmo y del estado aleatorio. Para solucionar esto, se deben ajustar las instancias de esta clase a los datos una vez, y luego mantener la instancia alrededor para realizar transformaciones.Referencias
Finding structure with randomness: Stochastic algorithms for constructing approximate matrix decompositions Halko, et al., 2009 (arXiv:909) https://arxiv.org/pdf/0909.4061.pdf
Ejemplos
>>> from sklearn.decomposition import TruncatedSVD >>> from scipy.sparse import random as sparse_random >>> X = sparse_random(100, 100, density=0.01, format='csr', ... random_state=42) >>> svd = TruncatedSVD(n_components=5, n_iter=7, random_state=42) >>> svd.fit(X) TruncatedSVD(n_components=5, n_iter=7, random_state=42) >>> print(svd.explained_variance_ratio_) [0.0646... 0.0633... 0.0639... 0.0535... 0.0406...] >>> print(svd.explained_variance_ratio_.sum()) 0.286... >>> print(svd.singular_values_) [1.553... 1.512... 1.510... 1.370... 1.199...]
Métodos
Ajusta el modelo a los datos de entrenamiento X.
Ajusta el modelo a X y realiza una reducción de la dimensionalidad en X.
Obtiene los parámetros para este estimador.
Transforma X de nuevo a su espacio original.
Establece los parámetros de este estimador.
Realiza una reducción de la dimensionalidad en X.
- fit()¶
Ajusta el modelo a los datos de entrenamiento X.
- Parámetros
- X{array-like, sparse matrix} de forma (n_samples, n_features)
Datos de entrenamiento.
- yIgnorado
- Devuelve
- selfobject
Devuelve el objeto transformador.
- fit_transform()¶
Ajusta el modelo a X y realiza una reducción de la dimensionalidad en X.
- Parámetros
- X{array-like, sparse matrix} de forma (n_samples, n_features)
Datos de entrenamiento.
- yIgnorado
- Devuelve
- X_newndarray de forma (n_samples, n_components)
Versión reducida de X. Esta será siempre un arreglo denso.
- 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 asignados a sus valores.
- inverse_transform()¶
Transforma X de nuevo a su espacio original.
Devuelve un arreglo X_original cuya transformación sería X.
- Parámetros
- Xarray-like de forma (n_samples, n_components)
Nuevos datos.
- Devuelve
- X_originalndarray de forma (n_samples, n_features)
Ten en cuenta que siempre se trata de un arreglo denso.
- set_params()¶
Establece los parámetros de este estimador.
El método funciona tanto 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()¶
Realiza una reducción de la dimensionalidad en X.
- Parámetros
- X{array-like, sparse matrix} de forma (n_samples, n_features)
Nuevos datos.
- Devuelve
- X_newndarray de forma (n_samples, n_components)
Versión reducida de X. Esta será siempre un arreglo denso.