Деревья решений являются популярным методом контролируемого обучения по различным причинам. Преимущества деревьев решений включают в себя, что их можно использовать как для регрессии, так и для классификации, они не требуют масштабирования функций, и они относительно легко интерпретировать, как вы можете визуализировать деревья решений. Это не только мощный способ понять вашу модель, но и для общения, как работает ваша модель. Следовательно, это поможет знать, как сделать визуализацию на основе вашей модели. Это урок покрывает:
- Как соответствовать модели дерева принятия решений, используя Scikit-Learn
- Как визуализировать деревья решений с помощью MATPLOTLIB
- Как визуализировать деревья решений с использованием Graphviz (что такое Graphviz, как установить его на Mac и Windows и как использовать его для визуализации деревьев решений)
- Как визуализировать отдельные деревья решений из пакетированных деревьев или случайных лесов
Как всегда, код, используемый в этом руководстве, доступен на моем Github Отказ С этим давайте начнем!
Для того чтобы визуализировать деревья решений, нам нужно сначала надо соответствовать модели дерева решений, используя Scikit-Nearn. Если этот раздел не понятен, я призываю вас читать мою Понимание деревьев решений для классификации (Python) Учебное пособие Когда я вхожу в много подробностей на том, как работают деревья, и как их использовать.
Импорт библиотеки
Следующие отчетности импорта являются то, что мы будем использовать для этого раздела Учебного пособия.
import matplotlib.pyplot as plt from sklearn.datasets import load_iris from sklearn.datasets import load_breast_cancer from sklearn.tree import DecisionTreeClassifier from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split import pandas as pd import numpy as np from sklearn import tree
Загрузите набор данных
Набор данных IRIS – один из наборов данных Scikit – Nearch поставляется с этим не требует загрузки любого файла с некоторых внешних веб-сайта. Код ниже загружает набор данных IRIS.
import pandas as pd from sklearn.datasets import load_irisdata = load_iris() df = pd.DataFrame(data.data, columns=data.feature_names) df['target'] = data.target
Расщепление данных в обучение и тестовые наборы
Ниже приведена код 75% данных в учебный набор и 25% данных в тестовый набор.
X_train, X_test, Y_train, Y_test = train_test_split(df[data.feature_names], df['target'], random_state=0)
Цвета в изображении указывают, какая переменная (X_TRAIN, X_ESTEST, Y_TRAIN, Y_TEST) данные из DATAFRAME DF пошли к конкретному тесту поезда, разделенные изображения, произведенные Майкл Галарний Отказ
Scikit-Sulect 4-ступенчатый модель моделирования
# Step 1: Import the model you want to use # This was already imported earlier in the notebook so commenting out #from sklearn.tree import DecisionTreeClassifier # Step 2: Make an instance of the Model clf = DecisionTreeClassifier(max_depth = 2, random_state = 0) # Step 3: Train the model on the data clf.fit(X_train, Y_train) # Step 4: Predict labels of unseen (test) data # Not doing this step in the tutorial # clf.predict(X_test)
С помощью Scikit-Learn Version 21.0 (примерно в мае 2019 года), деревья решений теперь могут быть нанесены с помощью MATPLOTLIB, используя Scikit-Source дерево .plot_tree Не полагаясь на точечную библиотеку, которая является трудно установленной зависимостью, которую мы будем охватывать позже в сообщении в блоге. Код ниже графики принимают решение, используя Scikit-Suart.
tree.plot_tree(clf);
В дополнение к добавлению кода, чтобы позволить вам сохранить свое изображение, код ниже пытается сделать дерево решений более интерпретируемо, добавив имена функций и классов (а также настройку).
fn=['sepal length (cm)','sepal width (cm)','petal length (cm)','petal width (cm)'] cn=['setosa', 'versicolor', 'virginica'] fig, axes = plt.subplots(nrows = 1,ncols = 1,figsize = (4,4), dpi=300) tree.plot_tree(clf, feature_names = fn, class_names=cn, filled = True); fig.savefig('imagename.png')
Изображение выше – это решение TTE, производимый через графику. Graphviz – это программное обеспечение визуализации графика открытого исходного кода. Визуализация графика – это способ представления структурной информации как диаграммы абстрактных графов и сетей. В науке данных одно использование графики состоит в том, чтобы визуализировать деревья решений. Я должен отметить, что причина, по которой я иду через графики после покрытия Matplotlib, заключается в том, что для того, чтобы понять это на работу может быть сложно. Первая часть этого процесса включает создание точечного файла. DOT-файл – это графическое представление дерева решений. Проблема в том, что используя Graphviz для преобразования файла точек в файл изображения (PNG, JPG и т. Д.) Может быть сложно. Есть пара параметров, в том числе: Установка Python-Graphviz Hote AnaConda, установка Graphviz через домощь (MAC), установка исполняемых файлов Graphviz с официального сайта (Windows) и используя онлайн-конвертер на содержимое вашего точечного файла для преобразования это в изображение.
Экспортируйте свою модель в точечный файл
Код ниже кода будет работать в любой операционной системе, поскольку Python генерирует точечный файл и экспортирует его как файл с именем Tree.dot.
tree.export_graphviz(clf, out_file="tree.dot", feature_names = fn, class_names=cn, filled = True)
Установка и использование графики
Преобразование точечного файла в файл изображения (PNG, JPG и т. Д.) Обычно требуется установка Graphviz, которая зависит от вашей операционной системы и множества других вещей. Цель этого раздела – помочь людям попробовать и решать общую проблему получения следующей ошибки. DOT: команда не найдена.
Как установить и использовать на Mac через AnaConda
Чтобы иметь возможность установить Graphviz на ваш Mac через этот метод, сначала необходимо установить AnaConda (если у вас нет установленной AnaConda, вы можете узнать, как установить его здесь ). Откройте терминал. Вы можете сделать это, нажав на лупу Spotlight в верхней правой правой части экрана, введите терминал, а затем нажмите на значок терминала. Введите команду ниже для установки Graphviz.
conda install python-graphviz
После этого вы должны быть в состоянии использовать команду DOT ниже, чтобы преобразовать файл DOT в файл PNG.
dot -Tpng tree.dot -o tree.png
Как установить и использовать на Mac через доморь
Если у вас нет AnaConda или просто хотите еще один способ установки графики на ваш Mac, вы можете использовать Домашний вид Отказ Ранее я написал статью о том, как установить домощь и использовать его, чтобы преобразовать точечный файл в файл изображения здесь (См. Длительность, чтобы помочь визуализировать раздел деревьев принятия решений учебника).
Как установить и использовать на Windows через AnaConda
Это метод, который я предпочитаю на Windows. Чтобы иметь возможность установить Graphviz на Windows через этот метод, сначала нужно установить AnaConda (если у вас нет установленной AnaConda, вы можете узнать, как установить его здесь ). Откройте клемму/командную строку и введите команду ниже, чтобы установить Graphviz.
conda install python-graphviz
После этого вы должны быть в состоянии использовать команду DOT ниже, чтобы преобразовать файл DOT в файл PNG.
dot -Tpng tree.dot -o tree.png
Как установить и использовать на Windows через исполняемый файл Graphviz
Если у вас нет AnaConda или просто хотите, чтобы другой способ установки Graphviz на ваших окнах вы можете использовать следующую ссылку для загрузки и установки его. Если вы не знакомы с изменением переменной пути и хотите использовать точку в командной строке, я поощряю другие подходы. Есть Многие вопросы Stackoverflow на основе этой конкретной проблемы Отказ
Как использовать онлайн-конвертер для визуализации деревьев принятия решений
Если все остальное не удается или вы просто не хотите ничего устанавливать, вы можете использовать Онлайн конвертер Отказ На рисунке ниже я открыл файл с Sublime Text (хотя есть много разных программ, которые могут открывать/прочитать точечный файл) и скопировали содержимое файла. На рисунке ниже я вставил содержимое из файла DOT на левую сторону онлайн-конвертера. Затем вы можете выбрать, какой формат вы хотите, а затем сохраните изображение на правой стороне экрана. Имейте в виду, что есть Другие онлайн-преобразователи Это может помочь осуществить ту же задачу.
Слабость деревьев решений состоит в том, что они не склонны к лучшей прогностической точности. Это частично из-за высокой дисперсии, что означает, что разные расщепления в учебных данных могут привести к очень разным деревьям. Изображение выше может быть схемой для пакетированных деревьев или случайных моделей лесов, которые являются методами ансамблевых. Это означает использование нескольких алгоритмов обучения для получения лучшей прогностической производительности, чем можно получить только из любого из любых составляющих алгоритмов обучения. В этом случае многие деревья защищают друг друга от своих отдельных ошибок. Насколько именно пакетированные деревья и произвольные лесные модели работают – это предмет для другого блога, но то, что важно отметить, что для каждой обе модели мы выращиваем n деревьев, где n – количество решений, которые указывают пользователя. Следовательно, после того, как вы подходите модель, было бы неплохо посмотреть на отдельные деревья решений, которые составляют вашу модель.
Установите случайную модель лесного цвета, используя Scikit-Learn
Для того чтобы визуализировать отдельные деревья решений, нам нужно сначала потребоваться установить пакетированные деревья или случайную лесную модель с использованием Scikit-Suart (код ниже подходит для случайной лесной модели).
# Load the Breast Cancer (Diagnostic) Dataset data = load_breast_cancer() df = pd.DataFrame(data.data, columns=data.feature_names) df['target'] = data.target # Arrange Data into Features Matrix and Target Vector X = df.loc[:, df.columns != 'target'] y = df.loc[:, 'target'].values # Split the data into training and testing sets X_train, X_test, Y_train, Y_test = train_test_split(X, y, random_state=0) # Random Forests in `scikit-learn` (with N = 100) rf = RandomForestClassifier(n_estimators=100, random_state=0) rf.fit(X_train, Y_train)
Визуализация ваших оценок
Теперь вы можете просматривать все отдельные деревья из установленной модели. В этом разделе я визуализирую все деревья решений с помощью MATPLOTLIB.
rf.estimators_
Теперь вы можете визуализировать отдельные деревья. Код ниже визуализирует первое дерево решений.
fn=data.feature_names cn=data.target_names fig, axes = plt.subplots(nrows = 1,ncols = 1,figsize = (4,4), dpi=800) tree.plot_tree(rf.estimators_[0], feature_names = fn, class_names=cn, filled = True); fig.savefig('rf_individualtree.png')
Вы можете попытаться использовать подломы MATPLOTLIB, чтобы визуализировать как можно больше деревьев. Подведенный ниже код визуализирует первые 5 деревьев решений. Я лично не предпочитаю этот метод, так как еще сложнее читать.
# This may not the best way to view each estimator as it is small fn=data.feature_names cn=data.target_names fig, axes = plt.subplots(nrows = 1,ncols = 5,figsize = (10,2), dpi=3000) for index in range(0, 5): tree.plot_tree(rf.estimators_[index], feature_names = fn, class_names=cn, filled = True, ax = axes[index]); axes[index].set_title('Estimator: ' + str(index), fontsize = 11) fig.savefig('rf_5trees.png')
Создавайте изображения для каждого из деревьев решений (оценочные)
Имейте в виду, что если по какой-то причине вы хотите изображения для всех ваших оценщиков (деревья решений), вы можете сделать это, используя код на моем Github Отказ Если вы просто хотите увидеть каждый из 100 оценок для произвольной лесной модели в форме в этом руководстве без запуска кода, вы можете посмотреть на видео ниже. Все 100 оценок видео
Это руководство покрыло, как визуализировать деревья решений с использованием графики и MATPLOTLIB. Обратите внимание, что способ визуализации деревьев решений с использованием MATPLOTLIB является более новым способом, поэтому он может измениться или улучшаться в будущем. Graphviz в настоящее время более гибкий, поскольку вы всегда можете изменить ваши точечные файлы, чтобы сделать их более визуально привлекательным, как будто я использовал точка язык Или даже просто изменить ориентацию дерева вашего решения. Одна вещь, которую мы не охватывали, это как использовать ДТРЕВИЗ Что является еще одной библиотекой, которая может визуализировать деревья решений. Есть отличный пост на нем здесь Отказ Если у вас есть какие-либо вопросы или мысли на руководстве, не стесняйтесь протягиваться в комментариях ниже или через Twitter Отказ Если вы хотите узнать больше о том, как использовать библиотеки Pandas, Matplotlib или Meanborn, пожалуйста, подумайте о моем Python для визуализации данных LinkedIn обучающий курс Отказ Блог изначально опубликован на среднем блоге Майкла Галарнегока.