Redução de Dimensionalidade com Análise de Componentes de Vizinhança

Beginner

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

Introdução

Este laboratório demonstra como aplicar a Análise de Componentes de Vizinhança (NCA) para redução de dimensionalidade utilizando a biblioteca scikit-learn. Este laboratório compara a NCA com outros métodos de redução de dimensionalidade (lineares) aplicados ao conjunto de dados Digits. O conjunto de dados Digits contém imagens de dígitos de 0 a 9 com aproximadamente 180 amostras de cada classe.

Dicas da Máquina Virtual

Após o arranque da máquina virtual, clique no canto superior esquerdo para mudar para a aba Notebook para aceder ao Jupyter Notebook para a prática.

Por vezes, pode ser necessário esperar alguns segundos para o Jupyter Notebook terminar o carregamento. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se tiver problemas durante o aprendizado, não hesite em contactar o Labby. Forneça feedback após a sessão e resolveremos prontamente o problema para si.

Importar Bibliotecas

Importe as bibliotecas necessárias:

  • numpy
  • matplotlib.pyplot
  • datasets
  • train_test_split
  • PCA
  • LinearDiscriminantAnalysis
  • KNeighborsClassifier
  • NeighborhoodComponentsAnalysis
  • make_pipeline
  • StandardScaler

Carregar o conjunto de dados Digits

Carregue o conjunto de dados Digits utilizando a função load_digits() do scikit-learn.

Dividir o conjunto de dados

Divida o conjunto de dados em conjuntos de treinamento e teste usando a função train_test_split() do scikit-learn.

Definir variáveis

Defina as variáveis necessárias para a análise:

  • dim = número de características no conjunto de dados
  • n_classes = número de classes no conjunto de dados
  • n_neighbors = número de vizinhos para o classificador KNN
  • random_state = estado aleatório para reprodutibilidade

Redução de dimensionalidade com PCA

Reduza a dimensionalidade do conjunto de dados para 2 usando Análise de Componentes Principais (PCA) criando um pipeline com StandardScaler() e PCA(n_components=2, random_state=random_state).

Redução de dimensionalidade com Análise Discriminante Linear

Reduza a dimensionalidade do conjunto de dados para 2 usando Análise Discriminante Linear (LDA) criando um pipeline com StandardScaler() e LinearDiscriminantAnalysis(n_components=2).

Redução de dimensionalidade com Análise de Componentes de Vizinhança

Reduza a dimensionalidade do conjunto de dados para 2 usando Análise de Componentes de Vizinhança (NCA) criando um pipeline com StandardScaler() e NeighborhoodComponentsAnalysis(n_components=2, random_state=random_state).

Usar classificador KNN para avaliar métodos

Crie um classificador KNeighborsClassifier com n_neighbors como parâmetro.

Criar lista de métodos a serem comparados

Crie uma lista de métodos a serem comparados com o classificador KNN utilizando os métodos definidos nas etapas 5-7.

Ajustar modelos e avaliar a precisão de teste

Ajuste cada modelo e avalie a precisão do teste transformando o conjunto de dados de treinamento e o conjunto de dados de teste com model.transform() e ajustando o classificador KNN no conjunto de dados de treinamento transformado. Calcule a precisão do vizinho mais próximo no conjunto de dados de teste transformado usando knn.score().

Plotar os pontos projetados e mostrar a pontuação de avaliação

Faça o plot dos pontos projetados e mostre a pontuação de avaliação para cada método usando plt.scatter() e plt.title().

Exibir gráficos

Exiba os gráficos usando plt.show().

Resumo

Este laboratório demonstrou como realizar redução de dimensionalidade com Análise de Componentes de Vizinhança (NCA) e a comparou com outros métodos de redução de dimensionalidade (lineares) aplicados ao conjunto de dados Digits. Os resultados mostraram que a NCA força um agrupamento dos dados que é visualmente significativo apesar da grande redução de dimensionalidade.