Как отобразить категориальные значения на изображении дерева экспорта классификатора дерева решений? - PullRequest
0 голосов
/ 30 сентября 2019

Я пытаюсь экспортировать дерево решений в виде изображения с исходными метками всех категориальных полей.

Текущие данные, которые у меня есть, выглядят так:

enter image description here

Я преобразовал категориальные признаки в числовые:

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:

enter image description here

Но что ядействительно нужно, чтобы увидеть основные метки каждой функции внутри узлов или в каждой ветви, вместо true или false или числового представления.

Я попробовал следующее:

y=lb.inverse_transform(y)

И то же самое для объектов X, но дерево генерируется так же, как указано выше.

...