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 dadosn_classes= número de classes no conjunto de dadosn_neighbors= número de vizinhos para o classificador KNNrandom_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.