Reducción de dimensionalidad
Índice de contenido
La reducción de la dimensionalidad es una de las técnicas básicas de preprocesado de datos, que consiste en la reducción del número de variables.
Ventajas de la reducción de dimensiones
A priori, puede parecer que cuanta más información, mejor. Sin embargo, en la mayoría de los casos no es así. De hecho, hay varias razones por las que puede ser interesante tratar de reducir el número de dimensiones del conjunto de datos:
- Se reduce la complejidad, con lo que el modelo y sus resultados se hacen más fácilmente interpretables.
- Por razones de ahorro, tanto en coste como en tiempo. Reduciendo las dimensiones, se mejora el rendimiento computacional.
- Se identifican y eliminan las variables irrelevantes, reduciendo el ruido del dataset original. Es importante tener en cuenta que, en ocasiones, el mejor modelo posible no es el que tiene en cuenta más variables, sino aquel que incluye únicamente la información “de calidad”. Aquí entra en juego la Maldición de la dimensionalidad.
¿Qué es la maldición de la dimensionalidad?
Normalmente, un modelo de Machine Learning requiere una información abundante al principio, con el fin de realizar predicciones más precisas. Sin embargo, llegado a cierto punto, el rendimiento del modelo disminuirá conforme aumente el número de variables. Este fenómeno es lo que se conoce como “maldición de la dimensionalidad”.
La maldición de la dimensionalidad tiene lugar porque, al aumentar el número de variables y mantenerse el mismo número de muestras, la densidad de la muestra disminuye exponencialmente, volviéndose cada vez más dispersa. A partir de una muestra dispersa, el modelo de Machine Learning posiblemente obtendrá una solución que, aparentemente, sea muy buena. Sin embargo, lo que estará sucediendo en realidad es que se habrá producido un sobreajuste.
Técnicas de reducción del número de variables
En líneas generales, se puede establecer la siguiente clasificación de técnicas de reducción del número de variables:
- Selección de variables: filtro de baja varianza, pruebas estadísticas univariadas, eliminación de características de forma recursiva, bosques aleatorios, ratio de valores faltantes, filtro de alta correlación, etc.
- Reducción de dimensionalidad:
- Lineal: análisis factorial, análisis de componentes principales (PCA), análisis de discriminante lineal.
- No lineal: escala multidimensional, mapeo de características isométricas, etc.
Técnicas de selección de variables
Filtro de baja varianza
Elimina las variables cuya varianza no alcanza un cierto umbral. De forma predeterminada, descarta todas las características de varianza cero, es decir, las características que tienen el mismo valor en todas las muestras.
from sklearn.feature_selection import VarianceThreshold
X = [[0, 0, 1], [0, 1, 0], [1, 0, 0], [0, 1, 1], [0, 1, 0], [0, 1, 1]]
np.array(X)
array([[0, 0, 1],
[0, 1, 0],
[1, 0, 0],
[0, 1, 1],
[0, 1, 0],
[0, 1, 1]])
sel = VarianceThreshold(threshold=(.8 * (1 - .8)))
sel_fit = sel.fit(X)
results = sel_fit.transform(X)
results
array([[0, 1],
[1, 0],
[0, 0],
[1, 1],
[1, 0],
[1, 1]])
results = sel.fit(X).transform(X)
results
array([[0, 1],
[1, 0],
[0, 0],
[1, 1],
[1, 0],
[1, 1]])
results = sel.fit_transform(X)
results
array([[0, 1],
[1, 0],
[0, 0],
[1, 1],
[1, 0],
[1, 1]])
Selección de variables univariadas
Estas técnicas seleccionan las mejores variables basándose en pruebas estadísticas univariadas. Toman como entrada una función de puntuación que, en general, puede ser:
- Para tareas de regresión: f_regression, mutual_info_regression
- Para tareas de clasificación: chi2, f_classif, mutual_info_classif
SelectKBest
Elimina todo menos las k características con puntuaciones más altas.
from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
X, y = load_iris(return_X_y=True)
X
array([[5.1, 3.5, 1.4, 0.2],
[4.9, 3. , 1.4, 0.2],
[4.7, 3.2, 1.3, 0.2],
[4.6, 3.1, 1.5, 0.2],
[5. , 3.6, 1.4, 0.2],
[5.4, 3.9, 1.7, 0.4],
[4.6, 3.4, 1.4, 0.3],
[5. , 3.4, 1.5, 0.2],
[4.4, 2.9, 1.4, 0.2],
[4.9, 3.1, 1.5, 0.1],
[5.4, 3.7, 1.5, 0.2],
[4.8, 3.4, 1.6, 0.2],
[4.8, 3. , 1.4, 0.1],
[4.3, 3. , 1.1, 0.1],
[5.8, 4. , 1.2, 0.2],
[5.7, 4.4, 1.5, 0.4],
[5.4, 3.9, 1.3, 0.4],
[5.1, 3.5, 1.4, 0.3],
[5.7, 3.8, 1.7, 0.3],
[5.1, 3.8, 1.5, 0.3],
[5.4, 3.4, 1.7, 0.2],
[5.1, 3.7, 1.5, 0.4],
[4.6, 3.6, 1. , 0.2],
[5.1, 3.3, 1.7, 0.5],
[4.8, 3.4, 1.9, 0.2],
[5. , 3. , 1.6, 0.2],
[5. , 3.4, 1.6, 0.4],
[5.2, 3.5, 1.5, 0.2],
[5.2, 3.4, 1.4, 0.2],
[4.7, 3.2, 1.6, 0.2],
[4.8, 3.1, 1.6, 0.2],
[5.4, 3.4, 1.5, 0.4],
[5.2, 4.1, 1.5, 0.1],
[5.5, 4.2, 1.4, 0.2],
[4.9, 3.1, 1.5, 0.2],
[5. , 3.2, 1.2, 0.2],
[5.5, 3.5, 1.3, 0.2],
[4.9, 3.6, 1.4, 0.1],
[4.4, 3. , 1.3, 0.2],
[5.1, 3.4, 1.5, 0.2],
[5. , 3.5, 1.3, 0.3],
[4.5, 2.3, 1.3, 0.3],
[4.4, 3.2, 1.3, 0.2],
[5. , 3.5, 1.6, 0.6],
[5.1, 3.8, 1.9, 0.4],
[4.8, 3. , 1.4, 0.3],
[5.1, 3.8, 1.6, 0.2],
[4.6, 3.2, 1.4, 0.2],
[5.3, 3.7, 1.5, 0.2],
[5. , 3.3, 1.4, 0.2],
[7. , 3.2, 4.7, 1.4],
[6.4, 3.2, 4.5, 1.5],
[6.9, 3.1, 4.9, 1.5],
[5.5, 2.3, 4. , 1.3],
[6.5, 2.8, 4.6, 1.5],
[5.7, 2.8, 4.5, 1.3],
[6.3, 3.3, 4.7, 1.6],
[4.9, 2.4, 3.3, 1. ],
[6.6, 2.9, 4.6, 1.3],
[5.2, 2.7, 3.9, 1.4],
[5. , 2. , 3.5, 1. ],
[5.9, 3. , 4.2, 1.5],
[6. , 2.2, 4. , 1. ],
[6.1, 2.9, 4.7, 1.4],
[5.6, 2.9, 3.6, 1.3],
[6.7, 3.1, 4.4, 1.4],
[5.6, 3. , 4.5, 1.5],
[5.8, 2.7, 4.1, 1. ],
[6.2, 2.2, 4.5, 1.5],
[5.6, 2.5, 3.9, 1.1],
[5.9, 3.2, 4.8, 1.8],
[6.1, 2.8, 4. , 1.3],
[6.3, 2.5, 4.9, 1.5],
[6.1, 2.8, 4.7, 1.2],
[6.4, 2.9, 4.3, 1.3],
[6.6, 3. , 4.4, 1.4],
[6.8, 2.8, 4.8, 1.4],
[6.7, 3. , 5. , 1.7],
[6. , 2.9, 4.5, 1.5],
[5.7, 2.6, 3.5, 1. ],
[5.5, 2.4, 3.8, 1.1],
[5.5, 2.4, 3.7, 1. ],
[5.8, 2.7, 3.9, 1.2],
[6. , 2.7, 5.1, 1.6],
[5.4, 3. , 4.5, 1.5],
[6. , 3.4, 4.5, 1.6],
[6.7, 3.1, 4.7, 1.5],
[6.3, 2.3, 4.4, 1.3],
[5.6, 3. , 4.1, 1.3],
[5.5, 2.5, 4. , 1.3],
[5.5, 2.6, 4.4, 1.2],
[6.1, 3. , 4.6, 1.4],
[5.8, 2.6, 4. , 1.2],
[5. , 2.3, 3.3, 1. ],
[5.6, 2.7, 4.2, 1.3],
[5.7, 3. , 4.2, 1.2],
[5.7, 2.9, 4.2, 1.3],
[6.2, 2.9, 4.3, 1.3],
[5.1, 2.5, 3. , 1.1],
[5.7, 2.8, 4.1, 1.3],
[6.3, 3.3, 6. , 2.5],
[5.8, 2.7, 5.1, 1.9],
[7.1, 3. , 5.9, 2.1],
[6.3, 2.9, 5.6, 1.8],
[6.5, 3. , 5.8, 2.2],
[7.6, 3. , 6.6, 2.1],
[4.9, 2.5, 4.5, 1.7],
[7.3, 2.9, 6.3, 1.8],
[6.7, 2.5, 5.8, 1.8],
[7.2, 3.6, 6.1, 2.5],
[6.5, 3.2, 5.1, 2. ],
[6.4, 2.7, 5.3, 1.9],
[6.8, 3. , 5.5, 2.1],
[5.7, 2.5, 5. , 2. ],
[5.8, 2.8, 5.1, 2.4],
[6.4, 3.2, 5.3, 2.3],
[6.5, 3. , 5.5, 1.8],
[7.7, 3.8, 6.7, 2.2],
[7.7, 2.6, 6.9, 2.3],
[6. , 2.2, 5. , 1.5],
[6.9, 3.2, 5.7, 2.3],
[5.6, 2.8, 4.9, 2. ],
[7.7, 2.8, 6.7, 2. ],
[6.3, 2.7, 4.9, 1.8],
[6.7, 3.3, 5.7, 2.1],
[7.2, 3.2, 6. , 1.8],
[6.2, 2.8, 4.8, 1.8],
[6.1, 3. , 4.9, 1.8],
[6.4, 2.8, 5.6, 2.1],
[7.2, 3. , 5.8, 1.6],
[7.4, 2.8, 6.1, 1.9],
[7.9, 3.8, 6.4, 2. ],
[6.4, 2.8, 5.6, 2.2],
[6.3, 2.8, 5.1, 1.5],
[6.1, 2.6, 5.6, 1.4],
[7.7, 3. , 6.1, 2.3],
[6.3, 3.4, 5.6, 2.4],
[6.4, 3.1, 5.5, 1.8],
[6. , 3. , 4.8, 1.8],
[6.9, 3.1, 5.4, 2.1],
[6.7, 3.1, 5.6, 2.4],
[6.9, 3.1, 5.1, 2.3],
[5.8, 2.7, 5.1, 1.9],
[6.8, 3.2, 5.9, 2.3],
[6.7, 3.3, 5.7, 2.5],
[6.7, 3. , 5.2, 2.3],
[6.3, 2.5, 5. , 1.9],
[6.5, 3. , 5.2, 2. ],
[6.2, 3.4, 5.4, 2.3],
[5.9, 3. , 5.1, 1.8]])
X_new = SelectKBest(chi2, k=2).fit_transform(X, y)
X_new
array([[1.4, 0.2],
[1.4, 0.2],
[1.3, 0.2],
[1.5, 0.2],
[1.4, 0.2],
[1.7, 0.4],
[1.4, 0.3],
[1.5, 0.2],
[1.4, 0.2],
[1.5, 0.1],
[1.5, 0.2],
[1.6, 0.2],
[1.4, 0.1],
[1.1, 0.1],
[1.2, 0.2],
[1.5, 0.4],
[1.3, 0.4],
[1.4, 0.3],
[1.7, 0.3],
[1.5, 0.3],
[1.7, 0.2],
[1.5, 0.4],
[1. , 0.2],
[1.7, 0.5],
[1.9, 0.2],
[1.6, 0.2],
[1.6, 0.4],
[1.5, 0.2],
[1.4, 0.2],
[1.6, 0.2],
[1.6, 0.2],
[1.5, 0.4],
[1.5, 0.1],
[1.4, 0.2],
[1.5, 0.2],
[1.2, 0.2],
[1.3, 0.2],
[1.4, 0.1],
[1.3, 0.2],
[1.5, 0.2],
[1.3, 0.3],
[1.3, 0.3],
[1.3, 0.2],
[1.6, 0.6],
[1.9, 0.4],
[1.4, 0.3],
[1.6, 0.2],
[1.4, 0.2],
[1.5, 0.2],
[1.4, 0.2],
[4.7, 1.4],
[4.5, 1.5],
[4.9, 1.5],
[4. , 1.3],
[4.6, 1.5],
[4.5, 1.3],
[4.7, 1.6],
[3.3, 1. ],
[4.6, 1.3],
[3.9, 1.4],
[3.5, 1. ],
[4.2, 1.5],
[4. , 1. ],
[4.7, 1.4],
[3.6, 1.3],
[4.4, 1.4],
[4.5, 1.5],
[4.1, 1. ],
[4.5, 1.5],
[3.9, 1.1],
[4.8, 1.8],
[4. , 1.3],
[4.9, 1.5],
[4.7, 1.2],
[4.3, 1.3],
[4.4, 1.4],
[4.8, 1.4],
[5. , 1.7],
[4.5, 1.5],
[3.5, 1. ],
[3.8, 1.1],
[3.7, 1. ],
[3.9, 1.2],
[5.1, 1.6],
[4.5, 1.5],
[4.5, 1.6],
[4.7, 1.5],
[4.4, 1.3],
[4.1, 1.3],
[4. , 1.3],
[4.4, 1.2],
[4.6, 1.4],
[4. , 1.2],
[3.3, 1. ],
[4.2, 1.3],
[4.2, 1.2],
[4.2, 1.3],
[4.3, 1.3],
[3. , 1.1],
[4.1, 1.3],
[6. , 2.5],
[5.1, 1.9],
[5.9, 2.1],
[5.6, 1.8],
[5.8, 2.2],
[6.6, 2.1],
[4.5, 1.7],
[6.3, 1.8],
[5.8, 1.8],
[6.1, 2.5],
[5.1, 2. ],
[5.3, 1.9],
[5.5, 2.1],
[5. , 2. ],
[5.1, 2.4],
[5.3, 2.3],
[5.5, 1.8],
[6.7, 2.2],
[6.9, 2.3],
[5. , 1.5],
[5.7, 2.3],
[4.9, 2. ],
[6.7, 2. ],
[4.9, 1.8],
[5.7, 2.1],
[6. , 1.8],
[4.8, 1.8],
[4.9, 1.8],
[5.6, 2.1],
[5.8, 1.6],
[6.1, 1.9],
[6.4, 2. ],
[5.6, 2.2],
[5.1, 1.5],
[5.6, 1.4],
[6.1, 2.3],
[5.6, 2.4],
[5.5, 1.8],
[4.8, 1.8],
[5.4, 2.1],
[5.6, 2.4],
[5.1, 2.3],
[5.1, 1.9],
[5.9, 2.3],
[5.7, 2.5],
[5.2, 2.3],
[5. , 1.9],
[5.2, 2. ],
[5.4, 2.3],
[5.1, 1.8]])
SelectPercentile
Elimina todas las características excepto el porcentaje de variables (especificado por el usuario) que tengan puntuación más alta.
from sklearn.datasets import load_digits
from sklearn.feature_selection import SelectPercentile, chi2
X, y = load_digits(return_X_y=True)
X.shape
(1797, 64)
X_new = SelectPercentile(chi2, percentile=10).fit_transform(X, y)
X_new
array([[ 8., 5., 8., ..., 0., 0., 0.],
[ 0., 0., 1., ..., 16., 0., 0.],
[ 0., 1., 8., ..., 16., 5., 9.],
...,
[ 0., 0., 9., ..., 14., 0., 0.],
[ 4., 0., 5., ..., 0., 2., 0.],
[ 0., 0., 12., ..., 6., 8., 1.]])
X_new.shape
(1797, 7)
SelectFpr
Tasa de falsos positivos.
SelectFdr
Tasa de descubrimiento falso.
SelectFwe
Error familiar.
GenericUnivariateSelect
Realiza una selección de características univariadas con una estrategia configurable.
from sklearn.datasets import load_breast_cancer
from sklearn.feature_selection import GenericUnivariateSelect, chi2
X, y = load_breast_cancer(return_X_y=True)
X.shape
(569, 30)
transformer = GenericUnivariateSelect(chi2, mode='k_best', param=20)
X_new = transformer.fit_transform(X, y)
X_new.shape
(569, 20)
Nota Si los datos son dispersos (sparse), las funciones chi2, mutual_info_regression y mutual_info_classif responderán bien.
Eliminación de características de forma recursiva
Esta técnica consiste en seleccionar grupos de características cada vez más pequeños. Primero, se entrena un estimador con todas las variables y se obtiene la importancia de cada una de ellas. Después, las menos importantes se eliminan y se vuelve a repetir el procedimiento hasta que se alcanza el número deseado de variables finales.
Selección de características basadas en árboles
Los árboles de decisión se pueden utilizar para calcular la importancia de las variables, por lo que se pueden usar para descartar variables irrelevantes (combinando el estimador basado en árboles de decisión con el método SelectFromModel de Scikit Learn, por ejemplo.
Técnicas de reducción de dimensionalidad
Análisis de componentes principales (PCA)
from sklearn import datasets
from sklearn.decomposition import PCA
X, y = datasets.load_iris(return_X_y=True)
X
array([[5.1, 3.5, 1.4, 0.2],
[4.9, 3. , 1.4, 0.2],
[4.7, 3.2, 1.3, 0.2],
[4.6, 3.1, 1.5, 0.2],
[5. , 3.6, 1.4, 0.2],
[5.4, 3.9, 1.7, 0.4],
[4.6, 3.4, 1.4, 0.3],
[5. , 3.4, 1.5, 0.2],
[4.4, 2.9, 1.4, 0.2],
[4.9, 3.1, 1.5, 0.1],
[5.4, 3.7, 1.5, 0.2],
[4.8, 3.4, 1.6, 0.2],
[4.8, 3. , 1.4, 0.1],
[4.3, 3. , 1.1, 0.1],
[5.8, 4. , 1.2, 0.2],
[5.7, 4.4, 1.5, 0.4],
[5.4, 3.9, 1.3, 0.4],
[5.1, 3.5, 1.4, 0.3],
[5.7, 3.8, 1.7, 0.3],
[5.1, 3.8, 1.5, 0.3],
[5.4, 3.4, 1.7, 0.2],
[5.1, 3.7, 1.5, 0.4],
[4.6, 3.6, 1. , 0.2],
[5.1, 3.3, 1.7, 0.5],
[4.8, 3.4, 1.9, 0.2],
[5. , 3. , 1.6, 0.2],
[5. , 3.4, 1.6, 0.4],
[5.2, 3.5, 1.5, 0.2],
[5.2, 3.4, 1.4, 0.2],
[4.7, 3.2, 1.6, 0.2],
[4.8, 3.1, 1.6, 0.2],
[5.4, 3.4, 1.5, 0.4],
[5.2, 4.1, 1.5, 0.1],
[5.5, 4.2, 1.4, 0.2],
[4.9, 3.1, 1.5, 0.2],
[5. , 3.2, 1.2, 0.2],
[5.5, 3.5, 1.3, 0.2],
[4.9, 3.6, 1.4, 0.1],
[4.4, 3. , 1.3, 0.2],
[5.1, 3.4, 1.5, 0.2],
[5. , 3.5, 1.3, 0.3],
[4.5, 2.3, 1.3, 0.3],
[4.4, 3.2, 1.3, 0.2],
[5. , 3.5, 1.6, 0.6],
[5.1, 3.8, 1.9, 0.4],
[4.8, 3. , 1.4, 0.3],
[5.1, 3.8, 1.6, 0.2],
[4.6, 3.2, 1.4, 0.2],
[5.3, 3.7, 1.5, 0.2],
[5. , 3.3, 1.4, 0.2],
[7. , 3.2, 4.7, 1.4],
[6.4, 3.2, 4.5, 1.5],
[6.9, 3.1, 4.9, 1.5],
[5.5, 2.3, 4. , 1.3],
[6.5, 2.8, 4.6, 1.5],
[5.7, 2.8, 4.5, 1.3],
[6.3, 3.3, 4.7, 1.6],
[4.9, 2.4, 3.3, 1. ],
[6.6, 2.9, 4.6, 1.3],
[5.2, 2.7, 3.9, 1.4],
[5. , 2. , 3.5, 1. ],
[5.9, 3. , 4.2, 1.5],
[6. , 2.2, 4. , 1. ],
[6.1, 2.9, 4.7, 1.4],
[5.6, 2.9, 3.6, 1.3],
[6.7, 3.1, 4.4, 1.4],
[5.6, 3. , 4.5, 1.5],
[5.8, 2.7, 4.1, 1. ],
[6.2, 2.2, 4.5, 1.5],
[5.6, 2.5, 3.9, 1.1],
[5.9, 3.2, 4.8, 1.8],
[6.1, 2.8, 4. , 1.3],
[6.3, 2.5, 4.9, 1.5],
[6.1, 2.8, 4.7, 1.2],
[6.4, 2.9, 4.3, 1.3],
[6.6, 3. , 4.4, 1.4],
[6.8, 2.8, 4.8, 1.4],
[6.7, 3. , 5. , 1.7],
[6. , 2.9, 4.5, 1.5],
[5.7, 2.6, 3.5, 1. ],
[5.5, 2.4, 3.8, 1.1],
[5.5, 2.4, 3.7, 1. ],
[5.8, 2.7, 3.9, 1.2],
[6. , 2.7, 5.1, 1.6],
[5.4, 3. , 4.5, 1.5],
[6. , 3.4, 4.5, 1.6],
[6.7, 3.1, 4.7, 1.5],
[6.3, 2.3, 4.4, 1.3],
[5.6, 3. , 4.1, 1.3],
[5.5, 2.5, 4. , 1.3],
[5.5, 2.6, 4.4, 1.2],
[6.1, 3. , 4.6, 1.4],
[5.8, 2.6, 4. , 1.2],
[5. , 2.3, 3.3, 1. ],
[5.6, 2.7, 4.2, 1.3],
[5.7, 3. , 4.2, 1.2],
[5.7, 2.9, 4.2, 1.3],
[6.2, 2.9, 4.3, 1.3],
[5.1, 2.5, 3. , 1.1],
[5.7, 2.8, 4.1, 1.3],
[6.3, 3.3, 6. , 2.5],
[5.8, 2.7, 5.1, 1.9],
[7.1, 3. , 5.9, 2.1],
[6.3, 2.9, 5.6, 1.8],
[6.5, 3. , 5.8, 2.2],
[7.6, 3. , 6.6, 2.1],
[4.9, 2.5, 4.5, 1.7],
[7.3, 2.9, 6.3, 1.8],
[6.7, 2.5, 5.8, 1.8],
[7.2, 3.6, 6.1, 2.5],
[6.5, 3.2, 5.1, 2. ],
[6.4, 2.7, 5.3, 1.9],
[6.8, 3. , 5.5, 2.1],
[5.7, 2.5, 5. , 2. ],
[5.8, 2.8, 5.1, 2.4],
[6.4, 3.2, 5.3, 2.3],
[6.5, 3. , 5.5, 1.8],
[7.7, 3.8, 6.7, 2.2],
[7.7, 2.6, 6.9, 2.3],
[6. , 2.2, 5. , 1.5],
[6.9, 3.2, 5.7, 2.3],
[5.6, 2.8, 4.9, 2. ],
[7.7, 2.8, 6.7, 2. ],
[6.3, 2.7, 4.9, 1.8],
[6.7, 3.3, 5.7, 2.1],
[7.2, 3.2, 6. , 1.8],
[6.2, 2.8, 4.8, 1.8],
[6.1, 3. , 4.9, 1.8],
[6.4, 2.8, 5.6, 2.1],
[7.2, 3. , 5.8, 1.6],
[7.4, 2.8, 6.1, 1.9],
[7.9, 3.8, 6.4, 2. ],
[6.4, 2.8, 5.6, 2.2],
[6.3, 2.8, 5.1, 1.5],
[6.1, 2.6, 5.6, 1.4],
[7.7, 3. , 6.1, 2.3],
[6.3, 3.4, 5.6, 2.4],
[6.4, 3.1, 5.5, 1.8],
[6. , 3. , 4.8, 1.8],
[6.9, 3.1, 5.4, 2.1],
[6.7, 3.1, 5.6, 2.4],
[6.9, 3.1, 5.1, 2.3],
[5.8, 2.7, 5.1, 1.9],
[6.8, 3.2, 5.9, 2.3],
[6.7, 3.3, 5.7, 2.5],
[6.7, 3. , 5.2, 2.3],
[6.3, 2.5, 5. , 1.9],
[6.5, 3. , 5.2, 2. ],
[6.2, 3.4, 5.4, 2.3],
[5.9, 3. , 5.1, 1.8]])
pca = PCA(n_components=3, random_state=10)
pca.fit(X)
PCA(n_components=3, random_state=10)
pca.components_
array([[ 0.36138659, -0.08452251, 0.85667061, 0.3582892 ],
[ 0.65658877, 0.73016143, -0.17337266, -0.07548102],
[-0.58202985, 0.59791083, 0.07623608, 0.54583143]])
pca.explained_variance_
array([4.22824171, 0.24267075, 0.0782095 ])
pca.explained_variance_ratio_
array([0.92461872, 0.05306648, 0.01710261])
pca.singular_values_
array([25.09996044, 6.01314738, 3.41368064])
pca.n_features_
4
pca.n_components_
3
X = pca.transform(X)
X
array([[-2.68412563, 0.31939725, -0.02791483],
[-2.71414169, -0.17700123, -0.21046427],
[-2.88899057, -0.14494943, 0.01790026],
[-2.74534286, -0.31829898, 0.03155937],
[-2.72871654, 0.32675451, 0.09007924],
[-2.28085963, 0.74133045, 0.16867766],
[-2.82053775, -0.08946138, 0.25789216],
[-2.62614497, 0.16338496, -0.02187932],
[-2.88638273, -0.57831175, 0.02075957],
[-2.6727558 , -0.11377425, -0.19763272],
[-2.50694709, 0.6450689 , -0.07531801],
[-2.61275523, 0.01472994, 0.10215026],
[-2.78610927, -0.235112 , -0.20684443],
[-3.22380374, -0.51139459, 0.06129967],
[-2.64475039, 1.17876464, -0.15162752],
[-2.38603903, 1.33806233, 0.2777769 ],
[-2.62352788, 0.81067951, 0.13818323],
[-2.64829671, 0.31184914, 0.02666832],
[-2.19982032, 0.87283904, -0.12030552],
[-2.5879864 , 0.51356031, 0.21366517],
[-2.31025622, 0.39134594, -0.23944404],
[-2.54370523, 0.43299606, 0.20845723],
[-3.21593942, 0.13346807, 0.29239675],
[-2.30273318, 0.09870885, 0.03912326],
[-2.35575405, -0.03728186, 0.12502108],
[-2.50666891, -0.14601688, -0.25342004],
[-2.46882007, 0.13095149, 0.09491058],
[-2.56231991, 0.36771886, -0.07849421],
[-2.63953472, 0.31203998, -0.1459089 ],
[-2.63198939, -0.19696122, 0.04077108],
[-2.58739848, -0.20431849, -0.07722299],
[-2.4099325 , 0.41092426, -0.14552497],
[-2.64886233, 0.81336382, 0.22566915],
[-2.59873675, 1.09314576, 0.15781081],
[-2.63692688, -0.12132235, -0.14304958],
[-2.86624165, 0.06936447, -0.16433231],
[-2.62523805, 0.59937002, -0.26835038],
[-2.80068412, 0.26864374, 0.09369908],
[-2.98050204, -0.48795834, 0.07292705],
[-2.59000631, 0.22904384, -0.0800823 ],
[-2.77010243, 0.26352753, 0.07724769],
[-2.84936871, -0.94096057, -0.34923038],
[-2.99740655, -0.34192606, 0.19250921],
[-2.40561449, 0.18887143, 0.26386795],
[-2.20948924, 0.43666314, 0.29874275],
[-2.71445143, -0.2502082 , -0.09767814],
[-2.53814826, 0.50377114, 0.16670564],
[-2.83946217, -0.22794557, 0.08372685],
[-2.54308575, 0.57941002, -0.01711502],
[-2.70335978, 0.10770608, -0.08929401],
[ 1.28482569, 0.68516047, -0.40656803],
[ 0.93248853, 0.31833364, -0.01801419],
[ 1.46430232, 0.50426282, -0.33832576],
[ 0.18331772, -0.82795901, -0.17959139],
[ 1.08810326, 0.07459068, -0.3077579 ],
[ 0.64166908, -0.41824687, 0.04107609],
[ 1.09506066, 0.28346827, 0.16981024],
[-0.74912267, -1.00489096, 0.01230292],
[ 1.04413183, 0.2283619 , -0.41533608],
[-0.0087454 , -0.72308191, 0.28114143],
[-0.50784088, -1.26597119, -0.26981718],
[ 0.51169856, -0.10398124, 0.13054775],
[ 0.26497651, -0.55003646, -0.69414683],
[ 0.98493451, -0.12481785, -0.06211441],
[-0.17392537, -0.25485421, 0.09045769],
[ 0.92786078, 0.46717949, -0.31462098],
[ 0.66028376, -0.35296967, 0.32802753],
[ 0.23610499, -0.33361077, -0.27116184],
[ 0.94473373, -0.54314555, -0.49951905],
[ 0.04522698, -0.58383438, -0.2350021 ],
[ 1.11628318, -0.08461685, 0.45962099],
[ 0.35788842, -0.06892503, -0.22985389],
[ 1.29818388, -0.32778731, -0.34785435],
[ 0.92172892, -0.18273779, -0.23107178],
[ 0.71485333, 0.14905594, -0.32180094],
[ 0.90017437, 0.32850447, -0.31620907],
[ 1.33202444, 0.24444088, -0.52170278],
[ 1.55780216, 0.26749545, -0.16492098],
[ 0.81329065, -0.1633503 , 0.0354245 ],
[-0.30558378, -0.36826219, -0.31849158],
[-0.06812649, -0.70517213, -0.24421381],
[-0.18962247, -0.68028676, -0.30642056],
[ 0.13642871, -0.31403244, -0.17724277],
[ 1.38002644, -0.42095429, 0.01616713],
[ 0.58800644, -0.48428742, 0.4444335 ],
[ 0.80685831, 0.19418231, 0.38896306],
[ 1.22069088, 0.40761959, -0.23716701],
[ 0.81509524, -0.37203706, -0.61472084],
[ 0.24595768, -0.2685244 , 0.18836681],
[ 0.16641322, -0.68192672, -0.06000923],
[ 0.46480029, -0.67071154, -0.02430686],
[ 0.8908152 , -0.03446444, -0.00994693],
[ 0.23054802, -0.40438585, -0.22941024],
[-0.70453176, -1.01224823, -0.10569115],
[ 0.35698149, -0.50491009, 0.01661717],
[ 0.33193448, -0.21265468, 0.08320429],
[ 0.37621565, -0.29321893, 0.07799635],
[ 0.64257601, 0.01773819, -0.20539497],
[-0.90646986, -0.75609337, -0.01259965],
[ 0.29900084, -0.34889781, 0.01058166],
[ 2.53119273, -0.00984911, 0.76016543],
[ 1.41523588, -0.57491635, 0.29632253],
[ 2.61667602, 0.34390315, -0.11078788],
[ 1.97153105, -0.1797279 , 0.10842466],
[ 2.35000592, -0.04026095, 0.28538956],
[ 3.39703874, 0.55083667, -0.34843756],
[ 0.52123224, -1.19275873, 0.5456593 ],
[ 2.93258707, 0.3555 , -0.42023994],
[ 2.32122882, -0.2438315 , -0.34830439],
[ 2.91675097, 0.78279195, 0.42333542],
[ 1.66177415, 0.24222841, 0.24244019],
[ 1.80340195, -0.21563762, -0.03764817],
[ 2.1655918 , 0.21627559, 0.03332664],
[ 1.34616358, -0.77681835, 0.28190288],
[ 1.58592822, -0.53964071, 0.62902933],
[ 1.90445637, 0.11925069, 0.47963982],
[ 1.94968906, 0.04194326, 0.04418617],
[ 3.48705536, 1.17573933, 0.13389487],
[ 3.79564542, 0.25732297, -0.51376776],
[ 1.30079171, -0.76114964, -0.34499504],
[ 2.42781791, 0.37819601, 0.21911932],
[ 1.19900111, -0.60609153, 0.51185551],
[ 3.49992004, 0.4606741 , -0.57318224],
[ 1.38876613, -0.20439933, -0.06452276],
[ 2.2754305 , 0.33499061, 0.28615009],
[ 2.61409047, 0.56090136, -0.20553452],
[ 1.25850816, -0.17970479, 0.0458477 ],
[ 1.29113206, -0.11666865, 0.23125646],
[ 2.12360872, -0.20972948, 0.15418002],
[ 2.38800302, 0.4646398 , -0.44953019],
[ 2.84167278, 0.37526917, -0.49889808],
[ 3.23067366, 1.37416509, -0.11454821],
[ 2.15943764, -0.21727758, 0.20876317],
[ 1.44416124, -0.14341341, -0.15323389],
[ 1.78129481, -0.49990168, -0.17287519],
[ 3.07649993, 0.68808568, -0.33559229],
[ 2.14424331, 0.1400642 , 0.73487894],
[ 1.90509815, 0.04930053, 0.16218024],
[ 1.16932634, -0.16499026, 0.28183584],
[ 2.10761114, 0.37228787, 0.02729113],
[ 2.31415471, 0.18365128, 0.32269375],
[ 1.9222678 , 0.40920347, 0.1135866 ],
[ 1.41523588, -0.57491635, 0.29632253],
[ 2.56301338, 0.2778626 , 0.29256952],
[ 2.41874618, 0.3047982 , 0.50448266],
[ 1.94410979, 0.1875323 , 0.17782509],
[ 1.52716661, -0.37531698, -0.12189817],
[ 1.76434572, 0.07885885, 0.13048163],
[ 1.90094161, 0.11662796, 0.72325156],
[ 1.39018886, -0.28266094, 0.36290965]])
Análisis de discriminante lineal (LDA)
https://scikit-learn.org/stable/modules/lda_qda.html#lda-qda
