Reducción de dimensionalidad con Análisis de Componentes Vecinos

Machine LearningMachine LearningBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-49224{{"Reducción de dimensionalidad con Análisis de Componentes Vecinos"}} end

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 datos
  • n_classes = número de clases en el conjunto de datos
  • n_neighbors = número de vecinos para el clasificador KNN
  • random_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.