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

时间:2017-04-21 06:54:52

标签: python python-3.x decision-tree pygraphviz

我无法可视化或编写决策树。我怎么能去做呢?

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

3 个答案:

答案 0 :(得分:0)

您可以使用此代码!!

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')

答案 1 :(得分:0)

我收到此错误,并尝试了一百万次。 我看到如果您在Windows中,我应该添加环境变量'path'。 我这样做了,重启了Python,但是没有用。 我这样做是为了graphviz和pydotplus。

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

我一直在使用类似 驱动器:\ Users \ User.Name \ AppData \ Local \ Continuum \ anaconda3 \ envs \ MyVirtualEnv \ lib \ site-packages \ graphviz,该方法不起作用,但我同时输入了这两个,对于pydotplus,输入了类似的内容。

答案 2 :(得分:0)

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

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

conda install python-graphviz

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