Введение
В этом лабораторном задании мы будем использовать датасет Iris и деревья решений для классификации типов ирисных цветов. Сначала мы визуализируем границы решений деревьев решений, обученных на парах признаков датасета Iris. Затем мы отображаем структуру одного дерева решений, обученного на всех признаках датасета Iris.
Советы по использованию ВМ
После запуска ВМ перейдите в левый верхний угол и переключитесь на вкладку Notebook, чтобы приступить к практике с Jupyter Notebook.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook полностью загрузится. Проверка операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Загрузка датасета Iris
Первым шагом является загрузка датасета Iris с использованием scikit - learn.
from sklearn.datasets import load_iris
iris = load_iris()
Визуализация границ решений
Теперь мы визуализируем границы решений деревьев решений, обученных на парах признаков датасета Iris.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.inspection import DecisionBoundaryDisplay
## Параметры
n_classes = 3
plot_colors = "ryb"
plot_step = 0.02
for pairidx, pair in enumerate([[0, 1], [0, 2], [0, 3], [1, 2], [1, 3], [2, 3]]):
## Мы берем только два соответствующих признака
X = iris.data[:, pair]
y = iris.target
## Обучаем
clf = DecisionTreeClassifier().fit(X, y)
## Строим границу решений
ax = plt.subplot(2, 3, pairidx + 1)
plt.tight_layout(h_pad=0.5, w_pad=0.5, pad=2.5)
DecisionBoundaryDisplay.from_estimator(
clf,
X,
cmap=plt.cm.RdYlBu,
response_method="predict",
ax=ax,
xlabel=iris.feature_names[pair[0]],
ylabel=iris.feature_names[pair[1]],
)
## Строим обучающие точки
for i, color in zip(range(n_classes), plot_colors):
idx = np.where(y == i)
plt.scatter(
X[idx, 0],
X[idx, 1],
c=color,
label=iris.target_names[i],
cmap=plt.cm.RdYlBu,
edgecolor="black",
s=15,
)
plt.suptitle("Decision surface of decision trees trained on pairs of features")
plt.legend(loc="lower right", borderpad=0, handletextpad=0)
_ = plt.axis("tight")
Отображение структуры дерева решений
Далее мы отобразим структуру одного дерева решений, обученного на всех признаках датасета Iris.
from sklearn.tree import plot_tree
plt.figure()
clf = DecisionTreeClassifier().fit(iris.data, iris.target)
plot_tree(clf, filled=True)
plt.title("Decision tree trained on all the iris features")
plt.show()
Резюме
В этом лабораторном задании мы использовали деревья решений для классификации типов ирисных цветов. Сначала мы визуализировали границы решений деревьев решений, обученных на парах признаков датасета Iris. Затем мы отобразили структуру одного дерева решений, обученного на всех признаках датасета Iris.