Menu
CoddyTech

Цифры с первого взгляда

Часть раздела Данные и графики путешествия по Machine Learning на Coddy. Урок 59 из 60.

load_digits содержит 1 797 изображений рукописных цифр. Каждый образец состоит из 64 значений яркости пикселей: строки за строкой изображения размером 8 на 8 пикселей, от 0 (пусто) до 16 (полностью закрашено).

Ни два автора не пишут цифру 4 одинаково:

Десять рукописных цифр 4 из load_digits, расположенных в два ряда по пять: белые на чёрном фоне, каждая немного по-разному наклонена и написана

Учителю нужен типичный вариант: среднее изображение, где значение каждого пикселя — это среднее значение этого пикселя по всем примерам цифры.

challenge icon

Задание

Сложно

Программа считывает цифру d. Загрузите набор цифр без as_frame, чтобы .data и .target были массивами NumPy.

  1. Вычислите усреднённое изображение цифры d.
  2. Выведите строку и столбец самого яркого пикселя, считая от 0.
  3. Выведите среднее значение чернил: среднее 64 значений средних пикселей, округлённое до 2 знаков с помощью np.round.
  4. Нарисуйте её как изображение размером 8 на 8 в gray, с заголовком Average и цифрой.

Для цифры 4 результат должен выглядеть так:

Серое изображение размером 8 на 8 с заголовком Average 4: размытая белая цифра 4 на чёрном фоне, самая яркая в месте, где большинство авторов пересекают штрих

Для входных данных 4 полный вывод будет таким:

Brightest pixel: row 5, column 4
Average ink: 4.85
Charts drawn: 1
Title: Average 4
Images: 1
Size: 8 rows, 8 columns
Color map: gray
Row 0: [0.0, 0.0, 0.5, 7.1, 11.5, 2.0, 0.2, 0.1]
Row 1: [0.0, 0.1, 3.5, 13.3, 8.5, 2.0, 1.1, 0.3]
Row 2: [0.0, 0.7, 10.5, 11.4, 4.9, 5.8, 3.8, 0.3]
Row 3: [0.0, 4.6, 14.5, 6.4, 7.4, 10.6, 6.1, 0.0]
Row 4: [0.0, 8.6, 14.6, 9.7, 13.0, 14.0, 5.3, 0.0]
Row 5: [0.1, 6.3, 11.3, 12.4, 14.6, 10.4, 1.6, 0.0]
Row 6: [0.1, 1.1, 2.9, 7.8, 13.5, 4.2, 0.0, 0.0]
Row 7: [0.0, 0.0, 0.6, 7.8, 11.8, 2.0, 0.0, 0.0]

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

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

d = int(input())

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

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

Все уроки раздела Данные и графики

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