Introducción
En este laboratorio, compararemos el rendimiento de dos algoritmos populares de reducción de dimensionalidad, Análisis de Componentes Principales (PCA, por sus siglas en inglés) y Análisis Discriminante Lineal (LDA, por sus siglas en inglés), en el conjunto de datos Iris. El conjunto de datos Iris contiene 3 tipos de flores Iris con 4 atributos: longitud del sépalo, ancho del sépalo, longitud del pétalo y ancho del pétalo.
Consejos sobre la VM
Una vez que se haya iniciado la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.
A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.
Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.
Cargar el conjunto de datos
Primero, necesitamos cargar el conjunto de datos Iris utilizando la función load_iris() incorporada en scikit-learn.
import matplotlib.pyplot as plt
from sklearn import datasets
iris = datasets.load_iris()
X = iris.data
y = iris.target
target_names = iris.target_names
Realizar PCA
A continuación, realizaremos el Análisis de Componentes Principales (PCA, por sus siglas en inglés) en el conjunto de datos para identificar la combinación de atributos que explica la mayor varianza en los datos. Graficaremos las diferentes muestras en los primeros dos componentes principales.
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
X_r = pca.fit(X).transform(X)
## Porcentaje de varianza explicada para cada componente
print("Explained variance ratio (first two components): %s" % str(pca.explained_variance_ratio_))
plt.figure()
colors = ["navy", "turquoise", "darkorange"]
lw = 2
for color, i, target_name in zip(colors, [0, 1, 2], target_names):
plt.scatter(X_r[y == i, 0], X_r[y == i, 1], color=color, alpha=0.8, lw=lw, label=target_name)
plt.legend(loc="best", shadow=False, scatterpoints=1)
plt.title("PCA of Iris Dataset")
plt.show()
Realizar LDA
Ahora, realizaremos el Análisis Discriminante Lineal (LDA, por sus siglas en inglés) en el conjunto de datos para identificar los atributos que explican la mayor varianza entre clases. A diferencia del PCA, el LDA es un método supervisado que utiliza las etiquetas de clase conocidas.
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
lda = LinearDiscriminantAnalysis(n_components=2)
X_r2 = lda.fit(X, y).transform(X)
plt.figure()
for color, i, target_name in zip(colors, [0, 1, 2], target_names):
plt.scatter(X_r2[y == i, 0], X_r2[y == i, 1], alpha=0.8, color=color, label=target_name)
plt.legend(loc="best", shadow=False, scatterpoints=1)
plt.title("LDA of Iris Dataset")
plt.show()
Comparar los resultados
Finalmente, compararemos los resultados del PCA y el LDA. Podemos ver que el LDA tiene un mejor rendimiento que el PCA para separar las tres clases en el conjunto de datos Iris.
Resumen
En este laboratorio, aprendimos cómo realizar el Análisis de Componentes Principales (PCA) y el Análisis Discriminante Lineal (LDA) en el conjunto de datos Iris utilizando scikit-learn. También comparamos el rendimiento de estos dos algoritmos de reducción de dimensionalidad y descubrimos que el LDA tiene un mejor rendimiento que el PCA para separar las diferentes clases en el conjunto de datos.