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 解决决策树可视化绘图时报错