Как читать дерево
Часть раздела Обучение с учителем путешествия по Machine Learning на Coddy. Урок 28 из 58.
Вопросы дерева понятны, поэтому ты можешь проверить, чему оно научилось. Проследи путь цветка длиной 5.1 см и шириной 1.6 см по дереву ирисов:
export_text выводит те же вопросы в виде текста, с одним отступом на каждый уровень:
from sklearn.tree import export_text
print(export_text(tree, feature_names=["petal_length", "petal_width"]))Это выводит:
|--- petal_width <= 0.80
| |--- class: 0
|--- petal_width > 0.80
| |--- petal_length <= 4.95
| | |--- class: 1
| |--- petal_length > 4.95
| | |--- class: 2Каждая строка отвечает только на вопросы по своему пути. Класс 2 — virginica, разумный ответ для длинных и широких лепестков.
Задание
СреднеДерево сырной лавки определяет сыр как свежий, мягкий или твёрдый по содержанию воды и сроку выдержки в неделях. Стартовый код обучает его и считывает данные о новом сыре.
- Выведи вопросы дерева с названиями признаков.
- Запусти программу, прочитай вопросы и дополни
by_hand, чтобы функция задавала те же вопросы с помощью if/else и возвращала тот же ответ.
После вывода дерева, для сыра, который дерево определяет как мягкий:
By hand: soft
The tree: softПопробуйте сами
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier, export_text
# Одна строка для каждого сыра: содержание воды (%), срок созревания в неделях и его сорт
cheeses = pd.read_csv("cheeses.csv")
features = ["moisture_pct", "aged_weeks"]
X_train, X_test, y_train, y_test = train_test_split(cheeses[features], cheeses["cheese"], test_size=0.25, random_state=0)
tree = DecisionTreeClassifier(max_depth=2, random_state=0)
tree.fit(X_train, y_train)
# Новый сыр, сорт которого нужно определить
moisture = int(input())
aged = int(input())
new_cheese = pd.DataFrame([[moisture, aged]], columns=features)
# Напишите код ниже: выведите дерево, затем в by_hand дайте такой же ответ, как оно
def by_hand(moisture, aged):
return "fresh"
# Не изменяйте строки ниже
print("By hand:", by_hand(moisture, aged))
print("The tree:", tree.predict(new_cheese)[0])
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Обучение с учителем
1Ваша первая модель
Обучение на примерахОбучающая и тестовая выборкиОбучение и предсказаниеОценка моделиПовторение: сортировщик семян4Логистическая регрессия
Предсказания «да» или «нет»Порог принятия решенияВеса как свидетельстваНесколько классовПовторение: спам-фильтр2Метод ближайших соседей
Как работает k-NNВыбор kГраницы принятия решенийМасштабирование признаков для поиска соседейПовторение: соседи для вин5Оценка классификаторов
Матрица ошибокТочность и полнотаF1-мераНесбалансированные классыROC-кривыеПовторение: скрининговый тест8Кросс-валидация
K-блочная проверкаСправедливое сравнение моделейПоиск по сеткеПовторение: ремонт скейтбордов11Проект: виды пингвинов
Знакомство с пингвинамиПодготовка данныхВыбор моделиНастройка лучшей моделиЗапуск модели3Линейная регрессия
Предсказание чиселНесколько признаковОценка ошибокГрафики остатковПовторение: прокат велосипедов6Деревья решений
Деревья задают вопросыКак читать деревоГлубина дереваВажность признаковПовторение: решения по кредитамПотренируйтесь самостоятельно: Онлайн-компилятор Python