Menu
CoddyTech

Компоненты как закономерности

Часть раздела Обучение без учителя путешествия по 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")

Первые четыре компоненты цифр в виде изображений размером 8 на 8: серый цвет соответствует весу, близкому к нулю, тёмный — большому весу, светлый — отрицательному

Компонента 1 тёмная там, где у цифр 4 и 6 есть чернила, поэтому они оказываются справа на карте. Сканирование получает высокий балл, когда чернила попадают на тёмные пиксели.

challenge icon

Задание

Средне

Учитель каллиграфии хочет увидеть, как люди пишут одну цифру. Программа считывает цифру, а в стартовом коде её изображения сохраняются в X.

  1. Обучи PCA с 3 компонентами на X.
  2. Нарисуй компоненту i на axs[i] в виде изображения размером 8 на 8, используя cmap="gray_r", с заголовком от Component 1 до Component 3.
  3. Покажи график.

Для цифр 2 получится вот такой рисунок. Затем Coddy опишет твои панели:

Три изображения компонент размером 8 на 8 с рукописными цифрами 2, озаглавленные Component 1, Component 2 и Component 3; каждое изображение состоит из тёмных и светлых штрихов

Попробуйте сами

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)

# Напишите свой код ниже
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Обучение без учителя

Потренируйтесь самостоятельно: Онлайн-компилятор Python