Деревья задают вопросы
Часть раздела Обучение с учителем путешествия по Machine Learning на Coddy. Урок 27 из 58.
Эта глава завершается деревом, которое объясняет, как получить кредит на ферму. Дерево решений играет в игру «Двадцать вопросов»: задаёт по одному вопросу о признаке, на который можно ответить «да» или «нет», пока не будет получен ответ:
При обучении для каждого вопроса выбираются ответы, которые как можно чище разделяют классы:
from sklearn.tree import DecisionTreeClassifier
tree = DecisionTreeClassifier(max_depth=2, random_state=0)
tree.fit(X_train, y_train) # длина и ширина лепестка, см
print(tree.predict([[4.5, 1.4]]))Это выводит [1], versicolor. max_depth=2 позволяет задать два вопроса на каждом пути. Масштабирование не требуется: каждый вопрос считывает один признак.
Задание
СреднеМагазин, сдающий камеры в аренду, отправляет сообщение-напоминание, если оборудование может вернуться с опозданием. Стартовый код разделяет данные о прошлых арендах и считывает новую аренду в таблицу из одной строки new_rental.
- Обучи дерево решений, в котором на каждом пути не более 2 вопросов (
random_state=0). - Выведи точность на тестовой выборке (3 знака после запятой) и прогноз для новой аренды:
likely lateдля 1,likely on timeдля 0.
Для другого магазина:
Test accuracy: 0.792
This rental: likely on timeПопробуйте сами
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
# Прошлые аренды: 1 в late означает, что оборудование вернули с опозданием
rentals = pd.read_csv("rentals.csv")
features = ["rental_weeks", "gear_value_usd", "customer_age", "late_before"]
X_train, X_test, y_train, y_test = train_test_split(rentals[features], rentals["late"], test_size=0.25, random_state=0)
# Новая аренда: количество забронированных недель, стоимость оборудования, возраст клиента и число его просроченных возвратов на данный момент
weeks = int(input())
value = int(input())
age = int(input())
late_before = int(input())
new_rental = pd.DataFrame([[weeks, value, age, late_before]], columns=features)
# Напишите свой код ниже
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Обучение с учителем
1Ваша первая модель
Обучение на примерахОбучающая и тестовая выборкиОбучение и предсказаниеОценка моделиПовторение: сортировщик семян4Логистическая регрессия
Предсказания «да» или «нет»Порог принятия решенияВеса как свидетельстваНесколько классовПовторение: спам-фильтр2Метод ближайших соседей
Как работает k-NNВыбор kГраницы принятия решенийМасштабирование признаков для поиска соседейПовторение: соседи для вин5Оценка классификаторов
Матрица ошибокТочность и полнотаF1-мераНесбалансированные классыROC-кривыеПовторение: скрининговый тест8Кросс-валидация
K-блочная проверкаСправедливое сравнение моделейПоиск по сеткеПовторение: ремонт скейтбордов11Проект: виды пингвинов
Знакомство с пингвинамиПодготовка данныхВыбор моделиНастройка лучшей моделиЗапуск модели3Линейная регрессия
Предсказание чиселНесколько признаковОценка ошибокГрафики остатковПовторение: прокат велосипедов6Деревья решений
Деревья задают вопросыКак читать деревоГлубина дереваВажность признаковПовторение: решения по кредитамПотренируйтесь самостоятельно: Онлайн-компилятор Python