Вот решение задачи, оформленное так, чтобы его было удобно переписать в тетрадь школьнику.
Задание
Задача:
Постройте классификатор на основе дерева принятия решений следующего датасета:
Данные:
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
target = [0, 0, 0, 1, 1, 1]
Решение:
Для построения классификатора на основе дерева принятия решений мы будем использовать библиотеку scikit-learn в Python.
Шаг 1: Импортируем необходимые библиотеки.
Нам понадобятся:
*
numpy для работы с массивами данных.
*
DecisionTreeClassifier из
sklearn.tree для создания модели дерева решений.
*
plot_tree из
sklearn.tree для визуализации дерева.
*
matplotlib.pyplot для отображения графика.
import numpy as np
from sklearn.tree import DecisionTreeClassifier, plot_tree
import matplotlib.pyplot as plt
Шаг 2: Определяем данные.
Перепишем данные, которые даны в задаче.
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
target = np.array([0, 0, 0, 1, 1, 1])
Шаг 3: Создаем и обучаем модель дерева принятия решений.
Мы создадим экземпляр
DecisionTreeClassifier и обучим его на наших данных
X и целевых значениях
target.
# Создаем классификатор
clf = DecisionTreeClassifier()
# Обучаем классификатор на данных
clf.fit(X, target)
Шаг 4: Визуализируем построенное дерево решений.
Для лучшего понимания того, как работает классификатор, мы можем визуализировать дерево.
# Создаем фигуру для графика
plt.figure(figsize=(10, 8))
# Строим дерево
plot_tree(clf, filled=True, feature_names=['Признак 1', 'Признак 2'], class_names=['Класс 0', 'Класс 1'])
# Отображаем график
plt.show()
Объяснение работы дерева решений:
Дерево решений будет принимать решения, основываясь на значениях признаков (в нашем случае это "Признак 1" и "Признак 2"). Каждый узел в дереве представляет собой условие (например, "Признак 1 <= 0.0"), которое разделяет данные на две группы. Листовые узлы (конечные узлы) дерева содержат предсказанный класс.
В данном примере, дерево, скорее всего, будет использовать одно или несколько условий, чтобы разделить точки с отрицательными координатами (которые относятся к классу 0) от точек с положительными координатами (которые относятся к классу 1).
Например, одно из первых условий может быть:
"Признак 1 <= 0.0"
* Если это условие истинно (например, для точек [-1, -1], [-2, -1], [-3, -2]), то точка, скорее всего, относится к Классу 0.
* Если это условие ложно (например, для точек [1, 1], [2, 1], [3, 2]), то точка, скорее всего, относится к Классу 1.
Таким образом, дерево решений строит набор правил "если-то", которые позволяют классифицировать новые данные.