属实逼真,决策树可视化!

简介: 属实逼真,决策树可视化!

同学们好


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

640.png


640.png


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


640.png


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


安装GraphViz


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


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


640.png


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


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


640.png


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


640.png


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


640.png


安装pygraphviz和pybaobabdt


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


640.png


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 np
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 = DecisionTreeClassifier().fit(X, y)
ax = pybaobabdt.drawTree(clf, size=10, dpi=72, features=features, colormap='Spectral')


640.png


这个图怎么看呢?


不同的颜色对应不同的分类(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)


640.png


怎么用,是不是很酷,赶紧去试试吧!


如有收获,可否在看、收藏、转发一下?感谢~

相关文章
|
机器学习/深度学习 数据挖掘
这图怎么画| 一个用于展示多种机器学习模型结果的热图
这图怎么画| 一个用于展示多种机器学习模型结果的热图
158 0
|
5月前
看张手绘草图就能合成图形程序,加州伯克利让扩散模型掌握新技能
【7月更文挑战第12天】加州伯克利研究团队利用神经扩散模型创新程序合成,通过在语法树上反向消除“噪声”实现迭代编辑,改善了传统LLMs自回归生成的局限性。这种方法能看手绘草图生成图形程序,结合搜索进行调试,适用于逆图形任务,性能优越,但目前仅支持有限的程序结构。[[arxiv:2405.20519](https://arxiv.org/pdf/2405.20519)]
44 2
|
7月前
|
数据可视化
数据分享|R语言逐步回归模型对电影票房、放映场数、观影人数预测可视化1
数据分享|R语言逐步回归模型对电影票房、放映场数、观影人数预测可视化
|
7月前
|
数据可视化
数据分享|R语言逐步回归模型对电影票房、放映场数、观影人数预测可视化2
数据分享|R语言逐步回归模型对电影票房、放映场数、观影人数预测可视化
|
机器学习/深度学习 搜索推荐 数据可视化
无热图不组学!高阶文献热图R语言绘制小专场拿捏
近在阅读近五年的一区高分的机器学习文献,其中有一种图出现频率特别高——热图。《
316 0
|
人工智能 vr&ar 图形学
次世代建模纹理贴图怎么做?
高端的引擎技术、材质贴图技术、渲染技术,使得次世代模型有着比肩电影画面的视觉效果,且是实时渲染。而且次世代模型有着面数高、贴图精度高、运用法线贴图描绘物体表面凹凸变化、高光贴图表现物体材质反光、实时光影等特点。
136 2
|
机器学习/深度学习 TensorFlow 算法框架/工具
利用机器学习进行人脸颜值评分
利用机器学习进行人脸颜值评分
576 0
|
机器学习/深度学习 数据可视化 算法
【机器学习3】鸢尾花数据集可视化,让枯燥的数据颜值爆表!
【机器学习3】鸢尾花数据集可视化,让枯燥的数据颜值爆表!
1400 0
|
机器学习/深度学习 数据挖掘
基于灰色神经网络的订单需求预测代码(Matlab代码实现)
基于灰色神经网络的订单需求预测代码(Matlab代码实现)
234 0
|
算法 数据挖掘
高分SCI必备-全方位无死角展示降维数据的三维立体图
高分SCI必备-全方位无死角展示降维数据的三维立体图
122 0