Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.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决策树图_Python_Scikit Learn_Graphviz_Dot_Pydot - Fatal编程技术网

Python决策树图

Python决策树图,python,scikit-learn,graphviz,dot,pydot,Python,Scikit Learn,Graphviz,Dot,Pydot,我试图用scikit learn实现一个决策树,然后用Graphviz可视化该树,我知道这是可视化DT的标准选择。我正在使用PyCharm、anaconda、Python 2.7和OS X El Capitan。据我所知,我已经用PIP安装了pydot和Graphviz,也直接在Pycharm中安装了它们,但无论我做什么,我都会不断得到一个“没有名为Graphviz的模块” from sklearn.datasets import load_iris from sklearn import tr

我试图用scikit learn实现一个决策树,然后用Graphviz可视化该树,我知道这是可视化DT的标准选择。我正在使用PyCharm、anaconda、Python 2.7和OS X El Capitan。据我所知,我已经用PIP安装了pydot和Graphviz,也直接在Pycharm中安装了它们,但无论我做什么,我都会不断得到一个“没有名为Graphviz的模块”

from sklearn.datasets import load_iris
from sklearn import tree
#import graphviz as gv
# uncommenting the row above produces an error
clf = tree.DecisionTreeClassifier()
iris = load_iris()
clf = clf.fit(iris.data, iris.target)
with open('graph.dot', 'w') as file:
    tree.export_graphviz(clf, out_file = file)
file.close()
目前运行此代码会生成graph.dot,但我无法查看该文件。 1.如何让graphviz存储库工作? 2.如何将图形写入PDF/PNG?我看到了一些例子,但不起作用 3.我找到了这个命令:dot-Tps filename.dot-o outfile.ps 我在哪里用的?如何验证我的OS X上是否存在点实用程序


提前谢谢

我很确定我使用自制软件安装了graphviz,但看起来你也可以从中下载二进制文件。如果无法使pydot工作,则需要从终端运行
dot
命令,或者在脚本中使用子流程:

import subprocess
subprocess.call(['dot', '-Tpdf', 'tree.dot', '-o' 'tree.pdf'])

您还可以使用以下代码导出为pdf

首先安装pydot2

pip install pydot2
然后可以使用以下代码:

from sklearn.datasets import load_iris
from sklearn import tree
clf = tree.DecisionTreeClassifier()
iris = load_iris()
clf = clf.fit(iris.data, iris.target)

from sklearn.externals.six import StringIO
import pydot 

dot_data = StringIO() 
tree.export_graphviz(clf, out_file=dot_data) 
graph = pydot.graph_from_dot_data(dot_data.getvalue()) 
graph.write_pdf("graph.pdf") 

如果您的系统上没有/不需要graphviz,您也可以将.dot文件作为文本打开,并将内容复制到其中,然后为您创建和显示树

但是,结果并不是您可以保存的图片或文件,您必须为创建的每棵树手动执行此操作。对于更复杂的和/或批处理树构建,您需要在系统上使用实际数据,因此您可以从终端或直接从Python中调用
dot
程序,如maxymoo所述