我在'文本中使用以下代码'二元分类问题:
def visualize_tree(tree,feature_names):
dot_data = StringIO()
export_graphviz(tree,
out_file=dot_data,
feature_names=feature_names,
special_characters=True)
graph = pydot.graph_from_dot_data(dot_data.getvalue(),)
graph.write_pdf("iris.pdf")
vec = CountVectorizer(lowercase=True, tokenizer=tokens2, binary=True, ngram_range=(1,2))
x = vec.fit_transform(X_train)
clf1 = DecisionTreeClassifier()
clf1.fit(x, y_train)
visualize_tree(clf1, vec.get_feature_names())
当我使用它没有 feature_names=feature_names,
时,它会生成一个像这样的漂亮树:
但是,当我添加feature_names=feature_names,
以向树中添加额外的详细信息时,它会为我提供以下“半树”!:
答案 0 :(得分:1)
您可以在命令行中使用graphviz,而不是使用pydot
,如果您想要使用subprocess
,可以从代码中调用它:
import subprocess
export_graphviz(model,
out_file='tree.dot',
feature_names=feature_names)
subprocess.call(['dot', '-Tpdf', 'tree.dot', '-o' 'tree.pdf'])