Снижение размерности с использованием анализа соседних компонентов

Beginner

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

Введение

В этом практическом занятии показано, как применить анализ соседних компонентов (Neighborhood Components Analysis, NCA) для снижения размерности с использованием библиотеки scikit-learn. В этом практическом занятии сравнивается NCA с другими (линейными) методами снижения размерности, примененными к набоору данных Digits. Набор данных Digits содержит изображения цифр от 0 до 9 с приблизительно 180 образцами каждого класса.

Советы по использованию ВМ

После запуска ВМ щелкните в верхнем левом углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Проверка операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы столкнетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.

Импорт библиотек

Импортируем необходимые библиотеки:

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

Загрузка набора данных Digits

Загрузите набор данных Digits с использованием функции load_digits() из scikit-learn.

Разделение набора данных

Разделите набор данных на обучающий и тестовый наборы данных с использованием функции train_test_split() из scikit-learn.

Определение переменных

Определите переменные, необходимые для анализа:

  • dim = количество признаков в наборе данных
  • n_classes = количество классов в наборе данных
  • n_neighbors = количество соседей для классификатора KNN
  • random_state = случайное состояние для воспроизводимости

Снижение размерности с использованием PCA

Понизьте размерность набора данных до 2 с использованием Анализа главных компонент (PCA), создав конвейер с StandardScaler() и PCA(n_components=2, random_state=random_state).

Снижение размерности с использованием Линейного Дискриминантного Анализа

Понизьте размерность набора данных до 2 с использованием Линейного Дискриминантного Анализа (LDA), создав конвейер с StandardScaler() и LinearDiscriminantAnalysis(n_components=2).

Снижение размерности с использованием Анализа Соседних Компонент

Понизьте размерность набора данных до 2 с использованием Анализа Соседних Компонент (NCA), создав конвейер с StandardScaler() и NeighborhoodComponentsAnalysis(n_components=2, random_state=random_state).

Использование классификатора KNN для оценки методов

Создайте KNeighborsClassifier с параметром n_neighbors.

Создание списка методов для сравнения

Создайте список методов для сравнения с классификатором KNN, используя методы, определенные в шагах 5-7.

Настройка моделей и оценка точности на тестовых данных

Настройте каждую модель и оцените точность на тестовых данных, трансформируя обучающий набор данных и тестовый набор данных с помощью model.transform() и настраивая классификатор KNN на трансформированном обучающем наборе данных. Вычислите точность ближайшего соседа на трансформированном тестовом наборе данных с использованием knn.score().

Постройте график проектированных точек и покажите оценочную метрику

Постройте график проектированных точек и покажите оценочную метрику для каждого метода с использованием plt.scatter() и plt.title().

Показать графики

Покажите графики с использованием plt.show().

Резюме

В этом практическом занятии показано, как выполнять уменьшение размерности с использованием анализа соседних компонентов (Neighborhood Components Analysis, NCA), и сравнивается с другими (линейными) методами уменьшения размерности, примененными к набору данных Digits. Результаты показали, что NCA обеспечивает кластеризацию данных, которая имеет смысл с точки зрения визуального восприятия, несмотря на значительное уменьшение размерности.