Menu
CoddyTech

Рассматриваем цифры

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

Твой последний проект: 1 797 сканов рукописных работ и ни одного учителя. За пять уроков ты найдёшь такие группы, не прочитав ни одной метки:

Десять размытых серых изображений цифр в два ряда — центры десяти групп, которые k-means обнаружил на сканах: 9, размытая 1 или 8, 7, 6, 2, 0, 3, 4, 5 и тонкая 1

Каждый проект начинается с наблюдения. Разброс пикселя, его std по множеству сканов, показывает, в каких местах авторы расходятся во мнениях. Здесь — по всем семёркам:

Сетка 8 на 8 с разбросом пикселей семёрок: чем темнее синий цвет, тем больше разброс; высокие значения вдоль верхней полосы и штриха вниз, 0.0 вдоль левого края и в правом нижнем углу

spread = X[y == 7].std(axis=0)
print((spread == 0).sum())

Это выводит 15: каждые 7 пикселей один пиксель остается пустым. Пиксель, который никогда не меняется, ничего не сообщает модели.

challenge icon

Задание

Средне

Начни исследовать. Стартовый код загружает сканы в X, цифры в y и настраивает диаграмму.

  1. Найди разброс значений каждого пикселя по всем сканам. Выведи строку, столбец и разброс для самого изменчивого пикселя (2 знака после запятой), а затем — сколько пикселей остаются пустыми на каждом скане.
  2. Изобрази их в виде картинки размером 8 на 8 на ax, используя cmap="Blues", и добавь цветовую шкалу. Покажи результат.

Только для единиц:

Busiest pixel: row 6, column 5 (spread 6.53)
Blank in every scan: 12 pixels

Картинка размером 8 на 8 с заголовком Where Writers Disagree и цветовой шкалой: разброс значений каждого пикселя для единиц, строки и столбцы пронумерованы от 0 до 7: две тёмные полосы посередине, где авторы размещают штрих в разных местах, и светлые края слева и справа

Твой результат охватывает все 1 797 сканов. Coddy описывает твою картинку. Где авторы расходятся сильнее всего?

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

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits

# 1,797 сканов рукописных цифр: каждый по 64 пикселя (8 на 8, интенсивность чернил от 0 до 16) и написанная цифра
digits = load_digits()
X = digits.data
y = digits.target

fig, ax = plt.subplots()
ax.set_title("Where Writers Disagree")

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

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

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

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