Introducción
Esta práctica demuestra cómo aplicar el Análisis de Componentes Vecinos (Neighborhood Components Analysis - NCA) para la reducción de dimensionalidad utilizando la biblioteca scikit-learn. Esta práctica compara el NCA con otros métodos (lineales) de reducción de dimensionalidad aplicados en el conjunto de datos Digits. El conjunto de datos Digits contiene imágenes de dígitos del 0 al 9 con aproximadamente 180 muestras de cada clase.
Consejos sobre la VM
Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Notebook 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 su retroalimentación después de la sesión y resolveremos rápidamente el problema para usted.
Importar bibliotecas
Importar las bibliotecas necesarias:
- numpy
- matplotlib.pyplot
- datasets
- train_test_split
- PCA
- LinearDiscriminantAnalysis
- KNeighborsClassifier
- NeighborhoodComponentsAnalysis
- make_pipeline
- StandardScaler
Cargar el conjunto de datos Digits
Cargar el conjunto de datos Digits utilizando la función load_digits() de scikit-learn.
Dividir el conjunto de datos
Dividir el conjunto de datos en conjuntos de entrenamiento y prueba utilizando la función train_test_split() de scikit-learn.
Definir variables
Definir las variables necesarias para el análisis:
dim= número de características en el conjunto de datosn_classes= número de clases en el conjunto de datosn_neighbors= número de vecinos para el clasificador KNNrandom_state= estado aleatorio para la reproducibilidad
Reducción de dimensionalidad con PCA
Reducir la dimensionalidad del conjunto de datos a 2 utilizando Análisis de Componentes Principales (PCA) creando una tubería con StandardScaler() y PCA(n_components=2, random_state=random_state).
Reducción de dimensionalidad con Análisis Discriminante Lineal
Reducir la dimensionalidad del conjunto de datos a 2 utilizando Análisis Discriminante Lineal (LDA) creando una tubería con StandardScaler() y LinearDiscriminantAnalysis(n_components=2).
Reducción de dimensionalidad con Análisis de Componentes Vecinos
Reducir la dimensionalidad del conjunto de datos a 2 utilizando Análisis de Componentes Vecinos (NCA) creando una tubería con StandardScaler() y NeighborhoodComponentsAnalysis(n_components=2, random_state=random_state).
Utilizar el clasificador KNN para evaluar métodos
Crear un KNeighborsClassifier con n_neighbors como parámetro.
Crear una lista de métodos a comparar
Crear una lista de métodos para comparar con el clasificador KNN utilizando los métodos definidos en los Pasos 5-7.
Ajustar los modelos y evaluar la precisión en el conjunto de prueba
Ajustar cada modelo y evaluar la precisión en el conjunto de prueba transformando el conjunto de entrenamiento y el conjunto de prueba con model.transform() y ajustando el clasificador KNN en el conjunto de entrenamiento transformado. Calcular la precisión de los vecinos más cercanos en el conjunto de prueba transformado utilizando knn.score().
Graficar los puntos proyectados y mostrar la puntuación de evaluación
Graficar los puntos proyectados y mostrar la puntuación de evaluación para cada método utilizando plt.scatter() y plt.title().
Mostrar los gráficos
Mostrar los gráficos utilizando plt.show().
Resumen
Esta práctica mostró cómo realizar la reducción de dimensionalidad con Análisis de Componentes Vecinos (NCA, por sus siglas en inglés) y la comparó con otros métodos (lineales) de reducción de dimensionalidad aplicados en el conjunto de datos Dígitos. Los resultados mostraron que el NCA fuerza una agrupación de los datos que tiene un significado visual a pesar de la gran reducción en la dimensión.