Почему работают леса
Часть раздела Обучение с учителем путешествия по Machine Learning на Coddy. Урок 42 из 58.
Деревья леса намеренно различаются. Каждое обучается на бутстрэп-выборке: строки случайным образом выбираются с возвращением, поэтому некоторые повторяются, а некоторые пропускаются.
Каждое дерево также выбирает несколько случайных признаков. Деревья допускают разные ошибки, а голосование их компенсирует. Два вида светлячков:
Лес сохраняет участок только там, где согласно большинство деревьев.
Деревья хранятся в forest.estimators_:
third = forest.estimators_[2]
print(round(third.score(X_test, y_test), 3))Это выводит 0.737. Весь лес получает оценку 0.895.
Задание
СреднеПобеждает ли лес собственные деревья? В стартовом коде модель forest обучается на данных riders.csv — о велосипедистах, которые завершили или не завершили заезд на 160 км менее чем за 6 часов, — и настраивается диаграмма.
- Оцени каждое дерево в лесу на тестовых строках.
- Построй гистограмму оценок с параметром
bins=10и отметьforest_accкрасной вертикальной линией. - Выведи количество деревьев, которые побеждает лес.
Для другого заезда было выведено The forest beats 88 of its 100 trees и построена такая диаграмма:
Затем Coddy описывает твою диаграмму.
Попробуйте сами
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
# Участники благотворительного велозаезда на 160 км: финишировали менее чем за 6 часов (1) или нет (0)
riders = pd.read_csv("riders.csv")
features = ["weekly_km", "long_ride_km", "age", "years_riding", "rest_days", "sleep_hours"]
X = riders[features].to_numpy() # обычный массив — формат, который ожидают деревья случайного леса
y = riders["under_6h"].to_numpy()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
forest = RandomForestClassifier(n_estimators=100, random_state=0)
forest.fit(X_train, y_train)
forest_acc = forest.score(X_test, y_test)
fig, ax = plt.subplots()
ax.set_title("The Forest and Its Trees")
ax.set_xlabel("Test accuracy")
ax.set_ylabel("Trees")
# Напишите свой код ниже
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Обучение с учителем
1Ваша первая модель
Обучение на примерахОбучающая и тестовая выборкиОбучение и предсказаниеОценка моделиПовторение: сортировщик семян4Логистическая регрессия
Предсказания «да» или «нет»Порог принятия решенияВеса как свидетельстваНесколько классовПовторение: спам-фильтр2Метод ближайших соседей
Как работает k-NNВыбор kГраницы принятия решенийМасштабирование признаков для поиска соседейПовторение: соседи для вин5Оценка классификаторов
Матрица ошибокТочность и полнотаF1-мераНесбалансированные классыROC-кривыеПовторение: скрининговый тест8Кросс-валидация
K-блочная проверкаСправедливое сравнение моделейПоиск по сеткеПовторение: ремонт скейтбордов11Проект: виды пингвинов
Знакомство с пингвинамиПодготовка данныхВыбор моделиНастройка лучшей моделиЗапуск моделиПотренируйтесь самостоятельно: Онлайн-компилятор Python