Компоненты как закономерности
Часть раздела Обучение без учителя путешествия по Machine Learning на Coddy. Урок 30 из 51.
На что смотрел PCA? Каждый компонент содержит 64 веса, по одному на пиксель, а components_ содержит одну строку на компонент:
pca = PCA(n_components=4).fit(X)
print(pca.components_.shape)Это выводит (4, 64). Измените форму строки на 8 на 8 — и получится изображение. cmap="gray_r" означает инвертированную шкалу серого: большие веса тёмные, отрицательные — светлые:
ax.imshow(pca.components_[0].reshape(8, 8), cmap="gray_r")Компонента 1 тёмная там, где у цифр 4 и 6 есть чернила, поэтому они оказываются справа на карте. Сканирование получает высокий балл, когда чернила попадают на тёмные пиксели.
Задание
СреднеУчитель каллиграфии хочет увидеть, как люди пишут одну цифру. Программа считывает цифру, а в стартовом коде её изображения сохраняются в X.
- Обучи PCA с 3 компонентами на
X. - Нарисуй компоненту
iнаaxs[i]в виде изображения размером 8 на 8, используяcmap="gray_r", с заголовком отComponent 1доComponent 3. - Покажи график.
Для цифр 2 получится вот такой рисунок. Затем Coddy опишет твои панели:
Попробуйте сами
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
# Каждое изображение одной цифры, считанной из ввода: 64 пикселя в строке
d = int(input())
digits = load_digits()
X = digits.data[digits.target == d]
# Не изменяйте строку ниже
fig, axs = plt.subplots(1, 3)
# Напишите свой код ниже
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Обучение без учителя
1Поиск групп
Обучение без метокИзмерение сходстваK-Means вручнуюK-Means в scikit-learnПовторение: участники спортзала4Иерархическая кластеризация
Пошаговое объединениеАгломеративные моделиДендрограммыПовторение: породы собак7PCA на практике
64 измеренияКомпоненты как закономерностиСжимаем и восстанавливаемPCA перед обучением моделиПовторение: сканер лиц2Выбор k
ИнерцияМетод локтяОценки силуэтаМасштабирование перед кластеризациейПовторение: зоны доставкиПотренируйтесь самостоятельно: Онлайн-компилятор Python