2016-12-18 5 views
1

Ich bekomme falsche Klassennamen im Entscheidungsbaum von "scikit learn/decision tree/export graphviz". Das Programm ist wie folgt dargestellt:scikit learn entscheidungsbaum export graphviz - falsche Klassennamen im Entscheidungsbaum

import matplotlib.pyplot as plt 
import matplotlib.image as img 
import pydot 
from sklearn import tree 

digital_table = [[0, 0], [0, 1], [1, 0], [1, 1]] 
digital_label = ['zero', 'one', 'two', 'three'] 
digital_name = ['idx-1', 'idx-2'] 

digital_tree = tree.DecisionTreeClassifier() 
digital_tree.fit(digital_table, digital_label) 

with open("digital.dot", 'w') as f: 
    f = tree.export_graphviz(digital_tree, 
          feature_names=digital_name, 
          class_names=digital_label, 
          filled=True, rounded=True, 
          out_file=f) 
(graph,) = pydot.graph_from_dot_file("digital.dot") 
graph.write_png("digital.png") 

plt.imshow(img.imread('digital.png')) 
plt.show() 

Die Ausgabe ist wie folgt:

the decision tree

Das Problem ist, über die Klassennamen in den Blättern gezeigt. Zum Beispiel sollte die grüne Box als 'drei' gekennzeichnet sein, wenn sowohl idx-1 als 1 als auch idx-2 als 1 sind. Aber das Bild zeigt die Bezeichnung als 'eins'. Kann jemand Ihre Kommentare geben?

Antwort

0

Versuchen Sie, die Klasse Etiketten alphabetisch Sortierung, bevor sie an export_graphviz

+0

Danke für die Kommentare vorbei. Aber ich denke, dass die Reihenfolge der Tabellenelemente und die Reihenfolge der Beschriftungselemente synchron sein sollte. Recht? – Frank

Verwandte Themen