项目场景:
在机器学习框架中遇到了一个bug:安装了GraphViz模块后,在对着sklearn的决策树文档操作输出决策树模型结果时,还是爆出了如下的错误:
报错位置为:
display(Image(graph.create_png()))
graph.write_png("tree_wine-Gini.png")
graph.write_pdf("tree wine-Gini.pdf")
报错语句为:
InvocationException: GraphViz’s executables not found
原因分析:
网上很多答案告诉我们,要我们安装GraphViz模块,然而并不对!
如下,我安装了GraphViz,但是还是报错了。
所以说问题不在这,我查阅质料发现,改正这个bug的方法有一个:下文详细描述。
解决方案:
解决bug为:
InvocationException: GraphViz's executables not found
1.去graphviz.官方下载自己电脑符合的操作系统的安装包:
https://graphviz.gitlab.io/_pages/Download/Download_windows.html
2,安装的时候,记住自己安装在电脑里的位置:以我的电脑为例,我的电脑安装的路径为:
D:\Graphviz\bin
3,安装完成之后,我们去运行一下代码,看看是否可以运行成功。
4.如果还是失败,你们就需要我们手动的去指明Graphviz的位置了:
添加如下代码:
import os
os.environ["PATH"] += os.pathsep + 'D:/Graphviz/bin'
在你的机器学习模型里:
import pydotplus
from IPython.display import display,Image
import os
os.environ["PATH"] += os.pathsep + 'D:/Graphviz/bin'
graph=pydotplus.graph_from_dot_data(dot_data.getvalue())
display(Image(graph.create_png()))
graph.write_png("tree_wine-Gini.png")
graph.write_pdf("tree wine-Gini.pdf")
运行结果:
完美的解决了这个bug。
在jupyter里也是好用的:
from sklearn import tree
clf = tree. DecisionTreeClassifier ()
lenses=clf.fit(X,y)
print("training score:",clf.score(X, y) )
from six import StringIO
dot_data = StringIO()
tree.export_graphviz(clf,out_file=dot_data,
feature_names=wine.feature_names,
class_names=wine.target_names,
filled=True,
rounded=True,
special_characters =True)
import pydotplus
from IPython.display import display,Image
graph=pydotplus.graph_from_dot_data(dot_data.getvalue())
import os
os.environ["PATH"] += os.pathsep + 'D:/Graphviz/bin'
display(Image(graph.create_png()))
graph.write_png("tree_wine-Gini.png")
graph.write_pdf("tree wine-Gini.pdf")