Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы по ОМО 2025 / Baraeva_Elizaveta_lb4.doc
Скачиваний:
0
Добавлен:
09.09.2026
Размер:
814 Кб
Скачать
☆
  1. Рассчитайте значения Precision, Recall, f1 для полученных результатов.

Расчет значений аналогичен п.2.4. Реализация представлена в Листинге 5.4.1. Результат представлен в Листинге 5.4.2.

Листинг 5.4.1 – Расчет значений Precision, Recall, F1

y_pred = tree.predict(X_test)

print(classification_report(y_test, y_pred, digits=4))

Листинг 5.4.2 – Результаты расчета

precision recall f1-score support

0 0.9828 0.9500 0.9661 60

1 0.9524 0.9836 0.9677 61

accuracy 0.9669 121

macro avg 0.9676 0.9668 0.9669 121

weighted avg 0.9674 0.9669 0.9669 121

Из результатов можно увидеть, что решающее дерево с подобранными гиперпараметрами демонстрирует отличные результаты классификации с общей точностью 96.69%. Для класса 0 наблюдается высокая точность предсказаний (98.28%) при полноте 95%, а для класса 1 – немного иное соотношение: Precision 95.24% при Recall 98.36%. F1-score для обоих классов практически идентичен (96.61% и 96.77%), что свидетельствует о сбалансированности модели. Можно отметить, что дерево показывает разное поведение для классов: лучше "ловит" класс 1 (Recall 98.36%), но точнее предсказывает класс 0 (Precision 98.28%). Средние показатели (около 96.7%) соответствуют общей точности, подтверждая стабильность работы модели. Ограничение глубины и листьев предотвратили переобучение, сохранив при этом высокую предсказательную способность. Минимальное количество наблюдений в листе обеспечило статистическую значимость решений. Выбранный критерий gini оптимально подошел для данной задачи, позволив дереву достичь точности, сопоставимой с методом опорных векторов (96.69%), но с более простой структурой.

  1. Визуализируйте полученное дерево решений. Сделайте выводы о правилах в узлах дерева. Сопоставьте их с полученными границами принятия решений.

Для построения дерева решений импортируем функцию plot_tree из библиотеки sklearn.tree. Передадим в функцию модель и параметр закрашивания. Реализация приведена в Листинге 5.6.1. График изображен на Рисунке 5.6.2.

Листинг 5.6.1 – Реализация построения дерева решений

from sklearn.tree import plot_tree

plt.figure()

plot_tree(tree, filled=True)

plt.show()

Рисунок 5.2.2 – График дерева решений

Дерево решений строит иерархию правил, начиная с наиболее значимого признака (в данном случае, x[0]) в корне дерева. Можно видеть, что модель использует два признака: x[0] и x[1]. Признак x[0] используется для первичного разделения, а x[1] используется для дополнительного уточнения классов на следующих уровнях дерева.

В каждом узле происходит пороговое сравнение: например, в корене дерева x[0] ≤ -0.228. Эти пороги делят пространство признаков на области, где преобладает один из классов.

Критерий gini – это мера "загрязненности" узла. Чем ближе он к 0, тем чище узел (объекты одного класса). На каждом шаге дерево выбирает локально лучшее разбиение, а не глобально оптимальное.

В результате дерево формирует ступенчатую карту решений, где каждая такая ступень соответствует одному условию в узле дерева. Ось X1 (x[0]) создаёт серию вертикальных разрезов, задающих «столбцы» принятия решений. Ось X2 (x[1]) создаёт горизонтали, уточняющие классификацию внутри этих столбцов. Чем глубже узел, тем уже и локальнее соответствующая область на графике.

Соседние файлы в папке Лабы по ОМО 2025