我正在尝试学习ML,而且我是菜鸟。 目前,我正在尝试这段视频(https://www.youtube.com/watch?v=tNa99PG8hR8)。
我的代码是:
import pydotplus
import numpy as np
from sklearn.datasets import load_iris
from sklearn import tree
from sklearn.externals.six import StringIO
iris = load_iris()
##print(iris.feature_names)
##print(iris.target_names)
##print(iris.data[0])
##print(iris.target[0])
##for i in range(len(iris.target)):
## print("Example %d: label %s, features %s" % (i, iris.target[i], iris.data[i]))
test_idx = [0,50,100]
##training data
train_target = np.delete(iris.target, test_idx)
train_data = np.delete(iris.data, test_idx, axis=0)
##testing data
test_target = iris.target[test_idx]
test_data = iris.data[test_idx]
clf = tree.DecisionTreeClassifier()
clf.fit(train_data, train_target)
print(test_target)
print(clf.predict(test_data))
dot_data = StringIO()
tree.export_graphviz(clf,
out_file=dot_data,
feature_names=iris.feature_names,
class_names=iris.target_names,
filled=True, rounded=True,
impurity=False)
graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
graph.write_pdf("iris.pdf")
但是错误显示:
Traceback (most recent call last):
File "C:\Users\Denis\Desktop\Machine Learning\iris.py", line 42, in graph.write_pdf("iris.pdf")
File "C:\Users\Denis\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pydotplus\graphviz.py", line 1810, in prog=self.prog: self.write(path, format=f, prog=prog)
File "C:\Users\Denis\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pydotplus\graphviz.py", line 1918, in write fobj.write(self.create(prog, format))
File "C:\Users\Denis\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pydotplus\graphviz.py", line 1960, in create 'GraphViz\'s executables not found') pydotplus.graphviz.InvocationException: GraphViz's executables not found
我尝试重新安装pydotplus和graphviz,但无济于事。 我不知道如何更改路径。 我搜索了graphviz文件夹,但没有找到bin文件。
答案 0 :(得分:1)
因此,您为python安装了graphviz库,但我想还没有安装Graphviz软件。
您可以从here安装它,并确保包含点可执行文件的目录在系统路径上。
ML之旅祝您好运! :-)
答案 1 :(得分:0)
对于所有在Windows 10中仍然面临上述问题的用户,即使尝试了上述步骤(即单独安装Graphviz软件),也对我有用-对于Windows 10用户,尝试调试此错误,请以管理员身份启动CMD(重要!)并运行dot -c然后运行dot -v 这为我解决了这个问题