Menu
CoddyTech

Рукописные цифры

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

Сортировочная машина почтового отделения считывает рукописные цифры почтовых индексов со сканов размером 8 на 8, с которыми вы познакомились в разделе «Цифры с первого взгляда», load_digits:

Двадцать рукописных цифр в два ряда: от 0 до 9, написанных двумя разными людьми и изображённых в виде небольших пиксельных серых сканов; некоторые очень похожи на другие цифры

На эту должность претендуют два кандидата: k-NN с таким значением k, которое предлагает инженер, и случайный лес из 100 деревьев.

На этот раз ошибки имеют значение. Офису нужен более справедливый победитель, его оценка на невиденных ранее сканах и самая частая путаница, поэтому эти цифры передадут человеку.

challenge icon

Задание

Сложно

Программа считывает значение k, введённое инженером; заготовка создаёт диаграмму с заголовком.

  1. Выдели стратифицированную тестовую четверть данных, указав random_state=0.
  2. Проведи кросс-валидацию k-NN с этим значением k и леса из 100 деревьев (random_state=0), используя 5 фолдов на обучающих строках. Выведи среднее значение для каждой модели (3 знака после запятой) и победителя.
  3. Обучи победившую модель и выведи её точность на тестовой выборке.
  4. Выведи самую большую ошибку в тестовой матрице ошибок, затем нарисуй матрицу на ax и покажи её.

Для другой машины и значения 3:

k-NN: CV accuracy 0.979
Random forest: CV accuracy 0.968
Winner: k-NN
Test accuracy: 0.976
Most confused: 7 read as 2 (3 times)

Затем Coddy покажет твою матрицу.

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

import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.neighbors import KNeighborsClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay

digits = load_digits()
X = digits.data
y = digits.target
k = int(input())

fig, ax = plt.subplots()
ax.set_title("Test Digits")

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

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

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

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