2016-12-18 14 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