InvocationException:未找到 GraphViz 的可执行文件

Posted

技术标签:

【中文标题】InvocationException:未找到 GraphViz 的可执行文件【英文标题】:InvocationException: GraphViz's executables not found 【发布时间】:2017-09-18 01:15:09 【问题描述】:

我无法可视化或编写决策树。我该怎么办?

Python 3.5,Anaconda 3,我连环境变量都设置好了

    from sklearn import tree
    model = tree.DecisionTreeClassifier(criterion='gini') 
    model=tree.DecisionTreeClassifier()
    model.fit(trainData,trainLabel)
    model.score(trainData,trainLabel)
    predicted= model.predict(testData)

    from sklearn.externals.six import StringIO
    import pydot 
    import pydotplus
    dot_data = StringIO() 
    tree.export_graphviz(model, out_file=dot_data) 
    graph = pydotplus.graph_from_dot_data(dot_data.getvalue()) 
    print(graph)
    graph.write_pdf("C:\\Users\\anagha\\Desktop\\SynehackData\\DATA\\DATA\\graph.pdf") 

错误:

InvocationException: GraphViz's executables not found

【问题讨论】:

请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。 【参考方案1】:

你可以利用这段代码!!

import pydotplus
from sklearn.datasets import load_iris
from sklearn import tree
import collections

# Data Collection
X = [ [180, 15,0],     
      [177, 42,0],
      [136, 35,1],
      [174, 65,0],
      [141, 28,1]]

Y = ['man', 'woman', 'woman', 'man', 'woman']    

data_feature_names = [ 'height', 'hair length', 'voice pitch' ]

# Training
clf = tree.DecisionTreeClassifier()
clf = clf.fit(X,Y)
# Visualize data
dot_data = tree.export_graphviz(clf,
                                feature_names=data_feature_names,
                                out_file=None,
                                filled=True,
                                rounded=True)
graph = pydotplus.graph_from_dot_data(dot_data)

colors = ('turquoise', 'orange')
edges = collections.defaultdict(list)

for edge in graph.get_edge_list():
    edges[edge.get_source()].append(int(edge.get_destination()))

for edge in edges:
    edges[edge].sort()    
    for i in range(2):
        dest = graph.get_node(str(edges[edge][i]))[0]
        dest.set_fillcolor(colors[i])

graph.write_png('tree.png')

【讨论】:

你能解释一下你的答案吗? 你可以参考这个链接然后参考上面的代码youtube.com/watch?v=q7PzqbKUm_4【参考方案2】:

我得到了这个错误并尝试了一百万件事。 我看到如果您在 Windows 中,我应该添加到环境变量“路径”中。 我这样做了,重新启动,Python,但它没有用。 我是为 graphviz 和 pydotplus 做的。

然后我看到有人使用了与我使用的路径略有不同的路径。 就像是 驱动器:\Users\User.Name\AppData\Local\Continuum\anaconda3\envs\MyVirtualEnv\Library\bin\graphviz 所以我将它添加到路径中,并重新启动了 anaconda 的所有内容。 这可能是我尝试的第 98 件事。成功了!

我一直在使用类似的路径 Drive:\Users\User.Name\AppData\Local\Continuum\anaconda3\envs\MyVirtualEnv\lib\site-packages\graphviz,这不起作用,但我把两个都放了,pydotplus也放了一个类似的。

【讨论】:

【参考方案3】:

我知道该线程有点旧,但今天我在尝试使用 PyAgrum 库在 Jupyter 笔记本中可视化贝叶斯网络时遇到了同样的错误。

我在使用 Anaconda 包管理的 Windows 10 上。在我的情况下,我需要使用以下命令安装包 python-graphviz

conda install python-graphviz

安装完成后,我只需要重新启动jupyter内核并再次运行代码即可。

【讨论】:

以上是关于InvocationException:未找到 GraphViz 的可执行文件的主要内容,如果未能解决你的问题,请参考以下文章

未找到 GraphViz 的可执行文件:Anaconda-3

InvocationException: GraphViz's executables not found

InvocationException: GraphViz‘s exe 解决决策树可视化绘图时报错

InvocationException: GraphViz‘s exe 解决决策树可视化绘图时报错

g++ 已安装但 make 说 g++ 未找到(奇怪)

解决“centos 下bash: g++: 未找到命令...”