0314——Graphviz问题(可视化CART数树)

背景描述:

python版本:3.6.3

IDE:pycharm

问题:

在pycharm上安装了graphviz和pydotplus等包,但是运行下面程序时,仍然会报错: GraphViz's executables not found
报错:
"F:\python\python project\learn & practise\venv2\Scripts\python.exe" E:/python_liao/0313-actual/0313_01_G635.py
Traceback (most recent call last):
  File "E:/python_liao/0313-actual/0313_01_G635.py", line 48, in <module>
    graph.write_pdf("G635_tree.pdf")
  File "F:\python\python project\learn & practise\venv2\lib\site-packages\pydotplus\graphviz.py", line 1810, in <lambda>
    prog=self.prog: self.write(path, format=f, prog=prog)
  File "F:\python\python project\learn & practise\venv2\lib\site-packages\pydotplus\graphviz.py", line 1918, in write
    fobj.write(self.create(prog, format))
  File "F:\python\python project\learn & practise\venv2\lib\site-packages\pydotplus\graphviz.py", line 1960, in create
    'GraphViz\'s executables not found')
pydotplus.graphviz.InvocationException: GraphViz's executables not found

 
 
程序:
  
import numpy as np
from sklearn import tree
from sklearn.tree 
import DecisionTreeRegressor
import matplotlib.pyplot as plt
import pandas as pd
import pydotplus
# 生成CART决策回归树模型
regr_1 = DecisionTreeRegressor(max_depth=5)
regr_1.fit(data_x_train, data_y_train)

# 用模型regr_1进行预测
data_y_predict = regr_1.predict(data_x_test) ******************************************************************************************** 该部分生成了决策回归树的可视化图,分别为.dot和.pdf格式的可视化文档# 现在可以将模型存入dot文件:G635_tree.dot
with open("G635_tree.dot", 'w') as f: 
f = tree.export_graphviz(regr_1, out_file=f)
# 可视化方法------------------------------------------
# 用pydotplus生成G635_tree.pdf。这样就不用再命令行去专门生成pdf文件了。
dot_data = tree.export_graphviz(regr_1, out_file=None)
graph = pydotplus.graph_from_dot_data(dot_data)
graph.write_pdf("G635_tree.pdf") 
********************************************************************************************

# plot the results
plt.figure(figsize=(12, 9))
plt.plot(data_x_axix, data_y_predict, color="r", label="predict", linewidth=2)
plt.plot(data_x_axix, data_y_test, 'b', label="original")
plt.xlabel("data")
plt.ylabel("target")
plt.title("Decision Tree Regression")
plt.legend()
plt.show()
print('model:\n', regr_1)
 
 

解决方法:

参照http://blog.csdn.net/tina_ttl/article/details/51778551里面的方法,下载Graphviz的.zip文件,解压到一个路径下,得到“**graphviz-2.38\release\“这样的文件夹,然后把该路径利用os.path加入到程序里面,即可得到正常运行该程序。并且生成两个文档,可视化决策树的分类结果。
    import os
    os.environ["PATH"] += os.pathsep + 'F:/python/graphviz-2.38/release/bin/'

不知道具体原因,参考其他人的解答:
没有安装GraphViz‘s executables。我是用pip安装的Graphviz,但是Graphviz不是一个python tool,仍然需要安装GraphViz‘s executables,解决方法是 将GraphViz安装目录的bin目录放到环境变量的path路径中。

另附sklearn的简介:

(附一个学习的网址:http://sklearn.lzjqsdd.com/index.html)
     自2007年发布以来,scikit-learn已经成为Python重要的机器学习库了。scikit-learn简称sklearn,支持包括分类、回归、降维和聚类四大机器学习算法。还包含了特征提取、数据处理和模型评估三大模块。
     sklearn是Scipy的扩展,建立在NumPy和matplotlib库的基础上。利用这几大模块的优势,可以大大提高机器学习的效率。
     sklearn拥有着完善的文档,上手容易,具有着丰富的API,在学术界颇受欢迎。sklearn已经封装了大量的机器学习算法,包括LIBSVM和LIBINEAR。同时sklearn内置了大量数据集,节省了获取和整理数据集的时间。


猜你喜欢

转载自blog.csdn.net/u011228094/article/details/79555577