Menu
CoddyTech

Кластеризуем цифры

Часть раздела Обучение без учителя путешествия по Machine Learning на Coddy. Урок 45 из 51.

Теперь открытие. Попросите k-means найти 10 групп в сканах с 13 числами — по одной для каждой цифры, которую, как вы надеетесь, он обнаружит. Он никогда не видит метки:

km = KMeans(n_clusters=10, n_init=10, random_state=0).fit(X_small)

Центр находится там, где работал k-means, в пространстве PCA: 13 чисел, без изображения. pca.inverse_transform восстанавливает его 64 пикселя:

Слева — столбчатая диаграмма с 13 числами одного центра k-means: сначала два высоких столбца, затем маленькие. Справа — тот же центр, восстановленный в виде размытого изображения 8 на 8, похожего на 0

value_counts() перечисляет кластеры, начиная с самых больших, поэтому галерея центров похожа на перепись сканов.

challenge icon

Задание

Средне

В стартовом наборе есть сканы и X_small — их версии из 13 чисел.

  1. Найди 10 кластеров в X_small с помощью k-средних.
  2. Восстанови 64 пикселя каждого центра.
  3. Создай галерею размером 2 на 5, сначала показывая самый большой кластер: каждый центр — как изображение 8 на 8 в gray_r, с заголовком, содержащим его размер, например 120 scans. Приведи макет в порядок и покажи его.

С 5 кластерами это выглядело бы так:

Пять размытых центров цифр в ряд с заголовками: 531, 367, 363, 359 и 177 сканов

У тебя их десять. Coddy описывает каждый график. Какие цифры k-средних нашёл самостоятельно?

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

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans

# Из раздела «Рассмотрим цифры»: 1,797 изображений по 64 пикселя, интенсивность от 0 до 16
digits = load_digits()
X = digits.data
y = digits.target

# Из раздела «Уменьшение размерности с PCA»: 80% дисперсии в 13 числах для каждого изображения
pca = PCA(n_components=0.8)
X_small = pca.fit_transform(X)

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

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

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

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