Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 不使用graphviz/web可视化决策树_Python_Scikit Learn_Visualization_Decision Tree - Fatal编程技术网

Python 不使用graphviz/web可视化决策树

Python 不使用graphviz/web可视化决策树,python,scikit-learn,visualization,decision-tree,Python,Scikit Learn,Visualization,Decision Tree,由于一些限制,我不能使用graphviz,webgraphviz.com 可视化决策树(工作网络与另一个世界是封闭的) 问题:是否有一些替代实用程序或Python代码,用于至少非常简单的可视化,可能只是决策树的ASCII可视化(Python/sklearn) 我的意思是,我可以特别使用sklearn:tree.export_graphviz() 它生成具有树结构的文本文件,从中可以读取树, 但是用“眼睛”做这件事并不愉快 PS 注意 graph = pydotplus.graph_from_do

由于一些限制,我不能使用graphviz,webgraphviz.com 可视化决策树(工作网络与另一个世界是封闭的)

问题:是否有一些替代实用程序或Python代码,用于至少非常简单的可视化,可能只是决策树的ASCII可视化(Python/sklearn)

我的意思是,我可以特别使用sklearn:tree.export_graphviz() 它生成具有树结构的文本文件,从中可以读取树, 但是用“眼睛”做这件事并不愉快

PS 注意

graph = pydotplus.graph_from_dot_data(dot_data.getvalue())  
Image(graph.create_png())

将不起作用,因为create_png隐式使用graphviz

这里是一个既不使用graphviz也不使用在线转换器的答案。从scikit learn 21.0版(大约2019年5月)起,现在可以使用scikit learn的matplotlib绘制决策树,而无需依赖graphviz

import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn import tree

X, y = load_iris(return_X_y=True)

# Make an instance of the Model
clf = DecisionTreeClassifier(max_depth = 5)

# Train the model on the data
clf.fit(X, y)

fn=['sepal length (cm)','sepal width (cm)','petal length (cm)','petal width (cm)']
cn=['setosa', 'versicolor', 'virginica']

# Setting dpi = 300 to make image clearer than default
fig, axes = plt.subplots(nrows = 1,ncols = 1,figsize = (4,4), dpi=300)

tree.plot_tree(clf,
           feature_names = fn, 
           class_names=cn,
           filled = True);

fig.savefig('imagename.png')
下图是保存的内容。


代码是根据这一点改编的

我以前用过,但它需要一些调整。您可能会找到更多答案,也可以在这里找到一些信息:本文可能对您有用: