Я пытаюсь экспортировать дерево решений в виде изображения с исходными метками всех категориальных полей.
Текущие данные, которые у меня есть, выглядят так:
Я преобразовал категориальные признаки в числовые:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Importing the dataset
dataset = pd.read_csv('data.csv')
X = dataset.iloc[:, 0:4]
y = dataset.iloc[:, 4]
from sklearn.preprocessing import LabelEncoder
lb = LabelEncoder()
X['Outlook'] = lb.fit_transform(X['Outlook'])
X['Temp'] = lb.fit_transform(X['Temp'])
X['Humidity'] = lb.fit_transform(X['Humidity'])
X['Windy'] = lb.fit_transform(X['Windy'])
y = lb.fit_transform(y)
Затем я применил DecisionTreeClassifier
:
from sklearn.tree import DecisionTreeClassifier
dtc = DecisionTreeClassifier(criterion="entropy")
dtc.fit(X, y)
В конце мне понадобилосьчтобы проверить дерево, сгенерированное из модели, используя следующее:
# Import tools needed for visualization
from sklearn.tree import export_graphviz
import pydot
# Pull out one tree from the forest
# Export the image to a dot file
export_graphviz(dtc, out_file = 'tree.dot', feature_names = X.columns, rounded = True, precision = 1)
# Use dot file to create a graph
(graph, ) = pydot.graph_from_dot_file('tree.dot')
# Write graph to a png file
graph.write_png('tree.png')
tree.png
:
Но что ядействительно нужно, чтобы увидеть основные метки каждой функции внутри узлов или в каждой ветви, вместо true
или false
или числового представления.
Я попробовал следующее:
y=lb.inverse_transform(y)
И то же самое для объектов X, но дерево генерируется так же, как указано выше.