2016-12-18 5 views
1

"scikit learn/decision tree/export graphviz"から決定木に間違ったクラス名が付いています。次のようにプログラムが表示されます。scikit決定木エクスポートgraphviz - 決定木のクラス名が間違っています

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() 

次のように出力されます

the decision tree

問題は葉に示すクラス名についてです。たとえば、idx-1が1、idx-2が1の場合、緑色のボックスには「3」というラベルを付ける必要がありますが、画像には「1」というラベルが表示されます。誰もあなたのコメントを与えることができますか?

答えて

0

はコメントexport_graphviz

+0

おかげに渡す前にアルファベット順にクラスラベルをソートしてみます。しかし、私は、テーブル要素の順序とラベル要素の順序が同期しているべきだと思います。右? – Frank