Глубина дерева
Часть раздела Обучение с учителем путешествия по Machine Learning на Coddy. Урок 29 из 58.
Дерево может продолжать задавать вопросы, пока у каждой строки обучающей выборки не появится свой ответ. Тогда оно запомнило данные, а не научилось:
Глубокие деревья запоминают шум собственных обучающих строк, поэтому точность на тестовой выборке сначала достигает пика, а затем падает. Попробуй несколько значений глубины:
train = []
test = []
for d in range(1, 13):
tree = DecisionTreeClassifier(max_depth=d, random_state=0)
tree.fit(X_train, y_train)
train.append(tree.score(X_train, y_train))
test.append(tree.score(X_test, y_test))На этих лунах глубина 6 лучше всего подходит для новых строк: пока оставим её. При глубине 8 дерево идеально работает на запомненных строках и хуже — на остальных.
Задание
СреднеОбзор неба с помощью телескопа распределяет небесные объекты на звёзды и галактики. Стартовый код разделяет их и настраивает график.
- Для каждой глубины из
depthsобучи дерево (random_state=0) и сохрани обе точности. - Выведи глубину с наилучшей точностью на тестовых данных, как показано ниже.
- Построй обе линии с метками
trainиtest, отметь наилучшую глубину пунктирной линиейax.axvline, добавь легенду и покажи график.
Для сортировщика манго:
Best depth: 5, test accuracy 0.867Затем Coddy опишет твой график. У него он выглядит так:
Попробуйте сами
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
# Одна строка для каждого небесного объекта в данных телескопического обзора: 1 в galaxy означает галактику, 0 — звезду
sky = pd.read_csv("sky.csv")
features = ["brightness_mag", "size_arcsec", "roundness", "color_index"]
X_train, X_test, y_train, y_test = train_test_split(sky[features], sky["galaxy"], test_size=0.25, random_state=0)
depths = range(1, 11)
fig, ax = plt.subplots()
ax.set_title("Star or Galaxy?")
ax.set_xlabel("Tree depth")
ax.set_ylabel("Accuracy")
# Напишите свой код ниже
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Обучение с учителем
1Ваша первая модель
Обучение на примерахОбучающая и тестовая выборкиОбучение и предсказаниеОценка моделиПовторение: сортировщик семян4Логистическая регрессия
Предсказания «да» или «нет»Порог принятия решенияВеса как свидетельстваНесколько классовПовторение: спам-фильтр2Метод ближайших соседей
Как работает k-NNВыбор kГраницы принятия решенийМасштабирование признаков для поиска соседейПовторение: соседи для вин5Оценка классификаторов
Матрица ошибокТочность и полнотаF1-мераНесбалансированные классыROC-кривыеПовторение: скрининговый тест8Кросс-валидация
K-блочная проверкаСправедливое сравнение моделейПоиск по сеткеПовторение: ремонт скейтбордов11Проект: виды пингвинов
Знакомство с пингвинамиПодготовка данныхВыбор моделиНастройка лучшей моделиЗапуск модели3Линейная регрессия
Предсказание чиселНесколько признаковОценка ошибокГрафики остатковПовторение: прокат велосипедов6Деревья решений
Деревья задают вопросыКак читать деревоГлубина дереваВажность признаковПовторение: решения по кредитамПотренируйтесь самостоятельно: Онлайн-компилятор Python