同学们好

决策树的可视化,我以为之前介绍的方法已经够惊艳了(决策树可视化,被惊艳到了!),没想到最近又发现了一个更惊艳的,而且更逼真,话不多说,先看效果图↓

直接绘制随机森林也不在话下

下面就向大家介绍一下这个神器 —— pybaobabdt

安装GraphViz

pybaobabdt依赖GraphViz,首先下载安装包

http://www.graphviz.org/download/

http://www.graphviz.org/download/

2、双击msi文件,然后一直选择next(默认安装路径为C:\Program Files (x86)\Graphviz2.38\),安装完成之后,会在windows开始菜单创建快捷信息。

3、配置环境变量:计算机→属性→高级系统设置→高级→环境变量→系统变量→path,在path中加入路径:

4、验证:在windows命令行界面,输入dot -version,然后按回车,如果显示如下图所示的graphviz相关版本信息,则安装配置成功。

安装pygraphviz和pybaobabdt

pip直接安装pygraphviz的话,大概率会报错,建议下载whl文件本地安装。

https://www.lfd.uci.edu/~gohlke/pythonlibs

pybaobabdt就简单了,直接pip install pybaobabdt 即可

pybaobabdt用法

pybaobabdt 用起来也简单到离谱,核心命令只有一个pybaobabdt.drawTree,下面是官方文档示例代码,建议在jupyter-notebook中运行。

import pybaobabdt
import pandas as pd
from scipy.io import arff
from sklearn.tree import DecisionTreeClassifier
from matplotlib.colors import LinearSegmentedColormap
from matplotlib.colors import ListedColormap
from colour import Color
import matplotlib.pyplot as plt
import numpy as npdata = arff.loadarff('vehicle.arff')
df   = pd.DataFrame(data[0])
y = list(df['class'])
features = list(df.columns)features.remove('class')
X = df.loc[:, features]clf = DecisionTreeClassifier().fit(X, y)ax = pybaobabdt.drawTree(clf, size=10, dpi=72, features=features, colormap='Spectral')

这个图怎么看呢?

不同的颜色对应不同的分类(target),每个分叉处都标记了分裂的条件,所以划分逻辑一目了然。树的深度也是工整的体现了出来。

树枝的直径也不是摆设,而是代表了样本的个数(比例),该划分条件下的样本越多,树干也就越粗。

你是发现最最底层的树枝太细太脆弱的时候,是不是应该考虑一下过拟合风险,比如需要调整一下最小样本数?

绘制随机森林

import pybaobabdt
import pandas as pd
from scipy.io import arff
import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestClassifier
data = arff.loadarff('vehicle.arff')df = pd.DataFrame(data[0])
y = list(df['class'])
features = list(df.columns)
features.remove('class')
X = df.loc[:, features]clf = RandomForestClassifier(n_estimators=20, n_jobs=-1, random_state=0)
clf.fit(X, y)
size = (15,15)
plt.rcParams['figure.figsize'] = size
fig = plt.figure(figsize=size, dpi=300)for idx, tree in enumerate(clf.estimators_):ax1 = fig.add_subplot(5, 4, idx+1)pybaobabdt.drawTree(tree, model=clf, size=15, dpi=300, features=features, ax=ax1)fig.savefig('random-forest.png', format='png', dpi=300, transparent=True)

怎么用,是不是很酷,赶紧去试试吧!
如有收获,可否在看、收藏、转发一下?感谢~

参考:https://mp.weixin.qq.com/s/uIazCL9SjNDguu59up5KjA

END

各位伙伴们好,詹帅本帅搭建了一个个人博客和小程序,汇集各种干货和资源,也方便大家阅读,感兴趣的小伙伴请移步小程序体验一下哦!(欢迎提建议)

推荐阅读

牛逼!Python常用数据类型的基本操作(长文系列第①篇)

牛逼!Python的判断、循环和各种表达式(长文系列第②篇)

牛逼!Python函数和文件操作(长文系列第③篇)

牛逼!Python错误、异常和模块(长文系列第④篇)

属实逼真,决策树可视化!相关推荐

  1. 独家 | 全面!手把手教你决策树可视化(附链接代码)

    作者: Terence Parr, Prince Grover 翻译:王雨桐 校对:詹好 本文长度约为9500字,建议阅读10+分钟 本文分析了决策树可视化中的关键因素,比较了现有的可视化工具.并通过 ...

  2. python决策树可视化_「决策树」| Part3—Python实现之可视化

    文章首发于微信公众号:AlgorithmDeveloper,专注机器学习与Python,编程与算法,还有生活. 1.前言 「决策树」| Part2-Python实现之构建决策树中我们已经可以基于给定数 ...

  3. 决策树可视化,被惊艳到了!

    目前无论是机器学习竞赛还是工业界,最流行.应用最广泛的xgboost其实是优化后的GBDT(LightGBM里面的boosting比较经典稳定的也是GBDT哦!),而GBDT的基分类器最常用的就是CA ...

  4. 决策树可视化保姆级教程

    决策树可视化指南 决策树是机器学习的一种经典的模型,因其泛化性能好,可解释性强而被广泛应用到实际商业预测中.通常在我们完成决策树模型搭建后,我们会进一步研究分析我们搭建好的模型,这时候模型的可视化就显 ...

  5. 决策树可视化以及数据所要的处理(查漏补缺)

    在前面的介绍当中,通过代码+注解的方式讲解了决策树的原理,而在可视化中通常调用对应的库会比较方便,这篇文章主要是可视化前的数据处理(若有错误的地方,请大家指教,谢谢!) 1.数据处理 import p ...

  6. 利用sklearn中 ID3算法实现简单的课程销量预测+决策树可视化

    决策树中ID3算法是一种贪心算法,用来构造决策树.ID3算法主要用到每个属性的信息增益,使用到信息熵.ID3算法计算每个属性的信息增益,并选取具有最高增益的属性作为给定集合的测试属性.对被选取的测试属 ...

  7. 关于决策树可视化各项展示数据的解读(泰坦尼克号预测生还案例Titanic)

    本人是业余的编程爱好者,非职业程序员,如有解读错误的地方,欢迎大牛评论指正. 我写这个的动力是:我一晚上花了大量的时间在网上找了各种关于决策树可视化的图中sex=male<0.5或sex=fem ...

  8. 决策树可视化及模型评估 SE SP AUC

    目录 2.1 决策树 2.1.1 样本数据集 2.1.2 决策树可视化 2.2 模型分类性能预测 2.2.1 模型稳定性 2.2.2 SE.SP.ACC分类性能预测 # 代码实现 2.1 决策树 2. ...

  9. dtreeviz:一款超级棒的决策树可视化和模型可解释性工具

    决策树是梯度提升机和随机森林的基本构建块,在学习这些模型的工作原理和模型可解释性时,可视化决策树是一个非常有帮助.不过,当前的可视化包还很初级,对新手没有多少帮助. 最近逛 Github 时,发现一款 ...

最新文章

  1. apollo local 模式_Java客户端使用指南 - 五、本地开发模式 - 《携程 Apollo v1.4 开发指南》 - 书栈网 · BookStack...
  2. 令人机双双崩溃的VS2008 SP1!WPF用户请勿更新!
  3. 原来,我们的时间这样被科技巨头们瓜分(转)
  4. 为什么复制粘贴格式总是出错_想把图片转换成pdf格式怎么做?你找对方法了吗...
  5. python哈姆雷特英文词频统计_MOOC《Python语言程序设计》第6周练习题
  6. Keras 中文文档地址
  7. 全志和瑞芯微比较_哪家强_华为海思/全志/瑞芯微终极PK 智能芯片哪家强?
  8. python kdj指标详解_Python版简单的KDJ策略
  9. python中的pip是什么_python中的pip是什么意思
  10. 同步电机是如何达到同步的?工作原理是什么?
  11. eclipse 使用maven打包 包含非java文件时报错
  12. c语言floor函数_floor()函数以及C ++中的示例
  13. 数学建模——房屋贷款问题——python实现
  14. (算法)海盗分赃_2
  15. 游戏开发计划——数据元素设计(人物)
  16. 计算机主机并联,如何一台主机多台电脑使用
  17. 新入行的软件测试工程师都应该知道的,不然为时已晚~
  18. C#编写的基于VLC的播放器
  19. java 多线程 内存泄露_关于内存泄露的总结
  20. 为python安装matlab引擎

热门文章

  1. RabbitMq 本地连接报错 org.springframework.amqp.AmqpIOException: java.io.IOException
  2. jmeter所有版本下载地址分享
  3. 《大型网站技术架构》读书笔记之七:随需应变之网站的可扩展架构
  4. svn 命令行查看history及比较不同版本
  5. ELK报错hese locations are not writable or multiple nodes were started without inc
  6. springboot嵌入thymeleaf后css404_SpringBoot2整合Thymeleaf
  7. 计算两个向量间的欧氏距离_用Numpy实现常见距离度量
  8. postman可以测试websocket吗_小海塔罗娱乐测试2021年可以脱单吗?
  9. git push 的符号笔有什么用_Git自救指南(一)——工欲善其事,必先利其器,基本概念概览...
  10. vue组件一直注册不了_【报Bug】现在究竟支不支持Vue.use内注册组件