问题:在使用决策树实现算法(ID3)过程中,得到模型结果,为了能够可视化展示,
解惑:故遇到了graphviz的问题。
配置:
1、python3.6
2、Windows环境
画出数据网络的布局,使用graphviz能比较清楚的画出数据之间的关系。通过官网可以看到此软件能画的图是不是好多,好流弊。
这个没啥可说的,很简单,直接命令行下:pip install graphviz
即可。
要想验证一下也很简单:
from graphviz import Digraph
直接运行看是否报错即可。
https://graphviz.gitlab.io/_pages/Download/Download_windows.html
双击下载的的msi文件,然后选好路径,傻瓜式操作即可。
环境变量配置:找到安装grphviz的bin目录,然后在系统环境变量path中,进去新建配置。
创建一个dot布局:first.dot
脚本,内容如下:
digraph first2{
a;
b;
c;
d;
a->b;
b->d;
c->d;
}
然后在first.dot
脚本目录下:cmd进入到命令窗口,执行:dot -Tpng first.dot -o first.png
生成的图片,可见:
"""
用sklearn的求决策树的方法(ID3)求出决策树,再利用graphviz进行可视化
#
dataset=[
[1,0,0,1,0],
[1,0,0,2,0],
[1,1,0,2,1],
[1,1,1,1,1],
[1,0,0,1,0],
[2,0,0,2,0],
[2,0,0,2,0],
[2,1,1,2,1],
[2,0,1,3,1],
[2,0,1,2,1],
[3,0,1,3,1],
[3,0,1,2,1],
[3,1,0,3,1],
[3,1,0,3,1],
[3,0,0,1,0]
]
dataset
"""
# 2、读取特征值
X = [x[0:4] for x in dataset] #读取特征值
Y = [y[-1] for y in dataset] # 读取类别-Y值
# 3、使用sklearn的求决策树的方法求出决策树,再利用graphviz进行可视化
from sklearn.tree import DecisionTreeClassifier
from sklearn.tree import export_graphviz
# 设置特征
feature = ['年龄', '无工作', '无房子', '信贷情况']
# 分类结果
classname = ['借', '不借']
# https://www.cntofu.com/book/170/docs/11.md ----------------中文说明文档
tree_clf = DecisionTreeClassifier(max_depth=4) # 训练的深度
tree_clf.fit(X,Y) #
from graphviz import Digraph
export_graphviz(tree_clf,out_file=("ID3.dot"), feature_names=feature,class_names=classname, rounded=True, filled=True)
import re
f = open('ID3.dot', 'r+',encoding='utf-8')
open('ID3_Tree_utf-8.dot', 'w', encoding='utf-8').write(re.sub(r'fontname=helvetica', 'fontname="Microsoft YaHei"', f.read()))
f.close()
代码运行之后,然后在源码目录下,执行:>dot -Tpng ID3_Tree_utf-8.dot -o ID3.png
边可查看生成的决策树:
说明:小试牛刀二的案例,具体出处是李航的统计学习方法的决策树章节。
https://www.cnblogs.com/shuodehaoa/p/8667045.html