准备工作
sklearn 中决策树的可视化需要安装 graphviz
下载安装 graphviz
官网下载地址 http://www.graphviz.org/
官网经常升级,选择适合自己的版本,我选择版本的下载地址 https://www2.graphviz.org/Packages/stable/windows/10/cmake/Release/x64/
双击安装即可
设置环境变量
方式1:安装时可选择 把安装路径添加到环境变量
方式2:手动添加环境变量到 PATH
检测是否安装成功
命令行任意路径下输入如下命令
如果没有安装好,按提示执行命令即可
有时候即使安装好了,代码执行仍然不成功,加入如下代码试试
os.environ["PATH"] += os.pathsep + r'C:\Program Files\Graphviz 2.44.1\bin'
C:\Program Files\Graphviz 2.44.1 为安装路径
dot 命令的作用是将 dot 文件转换成 pdf 或者 png
dot -Tpdf iris.dot -o iris.pdf
其他异常记录
Format: "jpg" not recognized. Use one of:
需要以管理员身份运行 cmd,执行 dot -c dot -v
随机森林可视化
使用 scikit-learn 时没有直接的方法显示随机森林,只能拆解成单棵树来显示;使用随机森林的属性clf.estimators_获取随机森林的决策树列表
示例代码
import os from sklearn.datasets import load_iris from sklearn.ensemble import RandomForestClassifier from sklearn.tree import export_graphviz # 系统环境变量添加Graphviz安装路径,以便下面代码可以用dot命令 os.environ["PATH"] += os.pathsep + 'D:/Program Files (x86)/Graphviz2.38/bin' iris = load_iris() X, y = iris.data, iris.target model = RandomForestClassifier(n_estimators=3, max_features=1) model.fit(X, y) # 循环打印每棵树 for idx, estimator in enumerate(model.estimators_): # 导出dot文件 export_graphviz(estimator, out_file='tree{}.dot'.format(idx), feature_names=iris.feature_names, class_names=iris.target_names, rounded=True, proportion=False, precision=2, filled=True) # 转换为png文件 os.system('dot -Tpng tree{}.dot -o tree{}.png'.format(idx, idx))
或者(接上面代码)
import graphviz trees = model.estimators_[2] gra_data = export_graphviz(trees, feature_names=['花萼长度','花萼宽度','花瓣长度','花瓣宽度']) # 因为标签是中文所以需要将参数设置成支持微软雅黑的格式 # gra_data = gra_data.replace('helvetica','"Microsoft Yahei"') grap = graphviz.Source(gra_data) # graph.render(filename ="iris", directory ='./', format='pdf') 保存图片 grap.render('forest')
决策树
同随机森林
中文乱码
上面的代码如果不行,执行如下操作
notepade 打开 dot 文件,手动修改
digraph Tree { node [shape=box, style="filled, rounded", color="black", fontname=helvetica] ; edge [fontname=helvetica] ;
把 fontname=helvetica 改成 fontname="Microsoft YaHei";
如果没有 fontname=helvetica,直接添加 fontname="Microsoft YaHei";
然后执行 dot 命令,如
dot -Tjpg Tree_utf8.dot -o tree1.jpg
参考资料:
https://blog.csdn.net/ydyang1126/article/details/78842952 决策树、随机森林结果可视化
https://blog.csdn.net/guolindonggld/article/details/101135001 随机森林可视化
https://my.oschina.net/u/3896378/blog/4445876 GraphViz可视化决策树和随机森林
https://graphviz.readthedocs.io/en/stable/api.html# graphviz 使用文档官网
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2020-01-13 PyTorch【1】-简介与安装
2020-01-13 吴恩达读书笔记【5】-流水线与端到端
2020-01-13 吴恩达读书笔记【4】-调试推理算法