Введение
В этом практическом занятии показано, как применить анализ соседних компонентов (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= количество соседей для классификатора KNNrandom_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 обеспечивает кластеризацию данных, которая имеет смысл с точки зрения визуального восприятия, несмотря на значительное уменьшение размерности.