Повторение: ремонт скейтбордов
Часть раздела Обучение с учителем путешествия по Machine Learning на Coddy. Урок 40 из 58.
Задание
СреднеСтойке проката в скейт-парке нужна модель, которая определяет, какие возвращённые доски нуждаются в ремонте. Программа считывает наибольшее значение k для проверки.
- Отдели 25% строк для тестирования (
random_state=0). - Для каждого k из
ksвыполни перекрёстную проверку k-NN на обучающих строках (cv=5). Отобрази средние значения в виде столбцов и выведи лучшее значение k. - Выполни поиск по сетке для дерева по параметру
max_depthсреди значенийdepths(cv=5,random_state=0) и выведи лучший результат. - Побеждает модель с более высоким средним значением: выведи
Winner: k-NNилиWinner: treeвместе с её точностью на тестовой выборке.
Для другого парка и значения 13:
Best k: 13 (mean 0.785)
Best depth: 5 (mean 0.763)
Winner: k-NN, test accuracy 0.822Затем Coddy описывает твою диаграмму. Она выглядит так:
Попробуйте сами
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split, cross_val_score, GridSearchCV
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
# Наибольшее значение k для проверки, например 15
max_k = int(input())
# Одна строка на каждый возвращённый скейтборд: число прокатов после последнего обслуживания, оценки износа от 0 до 10
# и трещины в деке; 1 в repair означает, что скейтборд отправили в мастерскую
boards = pd.read_csv("skateboards.csv")
features = ["rentals", "wheel_wear", "bearing_noise", "grip_wear", "truck_wobble", "deck_cracks"]
X = boards[features]
y = boards["repair"]
# Каждый признак — небольшое количество или оценка, поэтому k-NN здесь не требует масштабирования
ks = list(range(1, max_k + 1, 2))
depths = [2, 3, 4, 5, 6, 7, 8]
fig, ax = plt.subplots()
ax.set_title("Skateboard Repairs: Accuracy by k")
ax.set_xlabel("k (neighbors)")
ax.set_ylabel("Mean CV accuracy")
ax.set_xticks(ks)
ax.set_ylim(0.6, 0.9) # начинается с 0.6, чтобы были видны небольшие различия
# Напишите свой код ниже
Все уроки раздела Обучение с учителем
1Ваша первая модель
Обучение на примерахОбучающая и тестовая выборкиОбучение и предсказаниеОценка моделиПовторение: сортировщик семян4Логистическая регрессия
Предсказания «да» или «нет»Порог принятия решенияВеса как свидетельстваНесколько классовПовторение: спам-фильтр2Метод ближайших соседей
Как работает k-NNВыбор kГраницы принятия решенийМасштабирование признаков для поиска соседейПовторение: соседи для вин5Оценка классификаторов
Матрица ошибокТочность и полнотаF1-мераНесбалансированные классыROC-кривыеПовторение: скрининговый тест8Кросс-валидация
K-блочная проверкаСправедливое сравнение моделейПоиск по сеткеПовторение: ремонт скейтбордов11Проект: виды пингвинов
Знакомство с пингвинамиПодготовка данныхВыбор моделиНастройка лучшей моделиЗапуск моделиПотренируйтесь самостоятельно: Онлайн-компилятор Python