Деревья решений SkLearn: пошаговое руководство

Scikit-learn — это модуль Python, который используется в реализациях машинного обучения. Он распространяется в соответствии с BSD 3-clause и построен на основе SciPy. Реализация Python обеспечивает согласованный интерфейс и предоставляет надежные инструменты машинного обучения и статистического моделирования, такие как регрессия, SciPy, NumPy и т. д. Эти инструменты являются основой пакета SkLearn и в основном построены с использованием Python.

В этой статье мы узнаем все о деревьях решений Sklearn.

Пошаговая реализация деревьев решений Sklearn

Прежде чем приступить к кодированию для реализации деревьев решений, нам нужно собрать данные в правильном формате для построения дерева решений. Мы будем использовать набор данных iris из баз данных наборов данных sklearn, который относительно прост и демонстрирует, как построить классификатор дерева решений.

Преимущество Scikit-Decision Learn's Tree Classifier заключается в том, что целевая переменная может быть как числовой, так и категоризированной. Учитывая набор данных ирисов, мы сохраним категориальную природу цветов для ясности.

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Давайте теперь посмотрим, как можно реализовать деревья решений.

Импорт набора данных

импортировать панды как pd

импортировать numpy как np

из sklearn.datasets импортировать load_iris

данные = load_iris()

#конвертировать в фрейм данных

df = pd.DataFrame(данные.данные, столбцы = данные.имена_объектов)

#создать столбец видов

df('Виды') = данные.цель

#замените это реальными именами

цель = np.уникальный(данные.цель)

target_names = np.unique(data.target_names)

цели = dict(zip(цель, имена_целей))

df('Виды') = df('Виды').replace(цели)

Следующий шаг будет использован для извлечения наших тестовых и обучающих наборов данных. Цель состоит в том, чтобы гарантировать, что модель не обучается на всех данных, что позволит нам наблюдать, как она работает на данных, которые ранее не встречались. Если мы используем все данные в качестве обучающих данных, мы рискуем переобучить модель, то есть она будет плохо работать на неизвестных данных.

Извлечение наборов данных

x = df.drop(columns=”Виды”)

y = df(“Виды”)

feature_names = x.столбцы

метки = y.unique()

#разделить набор данных

из sklearn.model_selection импорт train_test_split

X_train, test_x, y_train, test_lab = train_test_split(x,y,

размер_теста = 0,4,

случайное_состояние = 42)

Теперь, когда у нас есть данные в правильном формате, мы построим дерево решений, чтобы предвидеть, как будут классифицированы различные цветы. Первым шагом является импорт пакета DecisionTreeClassifier из библиотеки sklearn.

Импорт классификатора дерева решений

из sklearn.tree импорт DecisionTreeClassifier

В рамках следующего шага нам нужно применить это к обучающим данным. Для этой цели классификатор инициализируется в clf с максимальной глубиной = 3 и случайным состоянием = 42. Аргумент максимальной глубины управляет максимальной глубиной дерева. Мы используем это, чтобы гарантировать, что не будет переобучения, и что мы можем просто увидеть, как был получен конечный результат. Параметр случайного состояния гарантирует, что результаты будут повторяемыми в последующих исследованиях. Теперь мы подгоним алгоритм к обучающим данным.

Станьте специалистом по обработке данных с помощью практического обучения!Программа магистратуры для специалистов по обработке данныхИзучить программуСтаньте специалистом по обработке данных с помощью практического обучения!

Подгонка алгоритма к обучающим данным

clf = DecisionTreeClassifier(макс_глубина =3, случайное_состояние = 42)

clf.fit(X_train, y_train)

Мы хотим понять, как работает алгоритм, и одним из преимуществ использования классификатора на основе дерева решений является то, что выходные данные легко понять и визуализировать.

Проверка алгоритмов

Это можно сделать двумя способами:

  1. В виде древовидной диаграммы
  2. В виде текстовой диаграммы

Давайте теперь рассмотрим подробную реализацию этих идей:

1. В виде древовидной диаграммы

из дерева импорта sklearn

импортировать matplotlib.pyplot как plt

plt.figure(figsize=(30,10), facecolor ='k')

а = дерево.plot_tree(clf,

имена_функций = имена_функций,

class_names = метки,

округлено = Правда,

заполнено = Истина,

размер шрифта = 14)

plt.show()

2. Как текстовая диаграмма

из sklearn.tree импорт экспорт_текст

tree_rules = экспорт_текста(clf,

feature_names = список(feature_names))

печать(дерево_правил)

Выход

|— ДлинаЛепесткаСм <= 2.45

| |— класс: Ирис-шелковистый

|— ДлинаЛепесткаСм > 2.45

| |— Ширина лепестка см <= 1,75

| | |— ДлинаЛепесткаСм <= 5.35

| | | |— класс: Iris-versicolor

| | |— ДлинаЛепесткаСм > 5.35

| | | |— класс: Iris-virginica

| |— Ширина лепестка см > 1,75

| | |— ДлинаЛепесткаСм <= 4.85

| | | |— класс: Iris-virginica

| | |— ДлинаЛепесткаСм > 4.85

| | | |— класс: Iris-virginica

Первое разделение основано на длине лепестка: те, что меньше 2,45 см, классифицируются как Iris-setosa, а те, что больше, как Iris-virginica. Для всех тех, у кого длина лепестка больше 2,45, происходит дальнейшее разделение, за которым следуют еще два разделения для получения более точной окончательной классификации.

Здесь нас интересует не только то, насколько хорошо он справился с тренировочными данными, но и то, насколько хорошо он работает с неизвестными тестовыми данными. Это подразумевает, что нам нужно будет использовать его для прогнозирования класса на основе результатов теста, что мы и сделаем с помощью метода predict().

Предсказать класс по тестовым значениям

test_pred_decision_tree = clf.predict(test_x)

Нас беспокоят ложноотрицательные результаты (предсказанные ложные, но на самом деле истинные), истинноположительные результаты (предсказанные истинные и на самом деле истинные), ложноположительные результаты (предсказанные истинные, но на самом деле не истинные) и истинноотрицательные результаты (предсказанные ложные и на самом деле ложные).

Одним из подходов к этому является изучение результатов в матрице путаницы. Матрица путаницы позволяет нам увидеть, как совпадают предсказанные и истинные метки, отображая фактические значения на одной оси и ожидаемые значения на другой. Это полезно для определения того, где мы можем получить ложные отрицательные или отрицательные результаты и насколько хорошо сработал алгоритм.

из sklearn импортировать метрики

импортировать seaborn как sns

импортировать matplotlib.pyplot как plt

матрица_замешательства = метрики.матрица_замешательства(тестовая_лаборатория,

тестовое_дерево_предварительного_решения)

matrix_df = pd.DataFrame(матрица_смешения)

ax = plt.оси()

sns.set(масштаб шрифта=1.3)

plt.figure(figsize=(10,7))

sns.heatmap(matrix_df, annot=True, fmt=”g”, ax=ax, cmap=”magma”)

ax.set_title('Матрица путаницы – Дерево решений')

ax.set_xlabel(“Прогнозируемая метка”, размер шрифта =15)

ax.set_xticklabels(('')+метки)

ax.set_ylabel(“Истинная метка”, размер шрифта=15)

ax.set_yticklabels(список(метки), вращение = 0)

plt.show()

В выходных данных выше только одно значение из класса Iris-versicolor не удалось предсказать по невидимым данным. Это говорит о том, что этот алгоритм хорошо справился с предсказанием невидимых данных в целом.

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *