用graphviz可视化决策树

时间:2023-02-03 12:07:43

1.安装graphviz。

graphviz本身是一个绘图工具软件,下载地址在:http://www.graphviz.org/。如果你是linux,可以用apt-get或者yum的方法安装。如果是windows,就在官网下载msi文件安装。无论是linux还是windows,装完后都要设置环境变量,将graphviz的bin目录加到PATH,比如我是windows,将C:/Program Files (x86)/Graphviz2.38/bin/加入了PATH

2.安装python插件graphviz。

python上有支持graphviz使用 的import graphviz

3.安装python插件pydotplus。

import pydotplus

from IPython.display import Image

这样环境就搭好了,有时候python会很笨,仍然找不到graphviz,这时,可以在代码里面加入这一行:

os.environ["PATH"] += os.pathsep + 'C:/Program Files (x86)/Graphviz2.38/bin/'

注意后面的路劲是你自己的graphviz的bin目录。

4、绘图

#用决策树建模

clf = tree.DecisionTreeClassifier() #默认的选取最优节点的标准是基尼系数,若想使用信息增益则为entropy
clf = clf.fit(Xtrain, Ytrain)
score = clf.score(Xtest, Ytest) #返回预测的准确度
print(str(clf))
print(score)

#用graphviz会画得决策树(没有解决中文乱码的问题???十分苦恼)

输出PDF至项目文件夹:

import pydotplus
import os
from sklearn.externals.six import StringIO
os.environ["PATH"] += os.pathsep + 'E:\graphviz\bin'
dot_data = StringIO()
tree.export_graphviz(clf #模型
                            ,feature_names= feature_name  #tez
                            ,class_names=["琴酒","雪莉","贝尔摩德"] #类别名
                            ,filled=True    #由颜色标识不纯度
                            ,rounded=True   #树节点为圆角矩形
                            ,out_file=dot_data
                        )
graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
graph.write_pdf("wine.pdf") #https://blog.csdn.net/chai_zheng/article/details/78226556

生成tree.dot文件,再用graphviz生成:

#生成tree.dot文件
with open("tree.dot", 'w') as f: f = tree.export_graphviz(clf , feature_names = feature_name # tez , class_names = ["琴酒", "雪莉", "贝尔摩德"] # 类别名 , filled = True # 由颜色标识不纯度 , rounded = True # 树节点为圆角矩形 ,out_file=f)

 a)通过graphviz的exe程序导入dot文件生成相对应的png或者pdf文件

 b)通过命令行dot -Tpdf tree.dot -o output.pdf,dot -Tpng tree.dot -o output.png将dot文件生成png或者pdf文件