使用export graphviz将特征和类名添加到决策树中

12

下午好,

我正在研究决策树分类器,但是在可视化它时遇到了困难。我可以输出决策树,但是无法将我的特征或类别名称/标签放入其中。我的数据以pandas数据框格式存储,然后转换为numpy数组并传递给分类器。我尝试过一些方法,但只要我尝试指定类名就会出错。希望能得到帮助。以下是代码。

all_inputs=df.ix[:,14:].values
all_classes=df['wic'].values

(training_inputs,
 testing_inputs,
 training_classes,
 testing_classes) = train_test_split(all_inputs, all_classes,train_size=0.75, random_state=1)

decision_tree_classifier=DecisionTreeClassifier()
decision_tree_classifier.fit(training_inputs,training_classes)

export_graphviz(decision_tree_classifier, out_file="mytree.dot",  
                     feature_names=??,  
                     class_names=??)  

就像我说的,如果我去掉feature_names和class_names参数,它可以正常运行并输出决策树图。但如果可能的话,我想在输出中包含它们,并且遇到了困难......

非常感谢任何帮助!

谢谢,

斯科特

3个回答

20

类名存储在decision_tree_classifier.classes_中,即您的DecisionTreeClassifier实例的classes_属性。特征名称应该是输入数据帧的列名。对于您的情况,您将拥有

class_names = decision_tree_classifier.classes_
feature_names = df.columns[14:]

8

0
#for class names
y_class_names=list(df['your_class_type_column'].unique())

#for feature names
X_col_names = list(X_train.columns)
feature_names = X_col_names
or
X_names = list(df.columns[:-1])

eg:  
import graphviz
# DOT data
dot_data = tree.export_graphviz(clf_gini, out_file=None, 
                                feature_names=X_col_names,  
                                class_names=y_class_names,
                                filled=True)

# Draw graph
graph = graphviz.Source(dot_data, format="png") 
graph

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接