可视化的工具有很多,应用的场景领域也各有不同,在深度学习领域里面已经有很多可视化的技术和工具用于尝试从某个维度来对模型进行解释,但是在机器学习领域里面对于模型进行可视化的工作还比较少,能做的东西相对也比较原始。
就我个人而言,做过的比较多的机器学习模型可视化的内容就是决策树的可视化,相信绝大多数同学做出来的效果图应该都是类似下面风格的:
这个是我们借助于graphviz模块进行的可视化,最早期的时候觉得还是很有意思的,做的多了感觉这个显得就比较原始了,最近找到一款颜值、功能、实用性都很高的模块,这里分享给大家,有需要的可以试试看。
项目地址在这里。截图如下所示:
但是看介绍就感觉很有趣的样子,果断拿来用用,官方也提供了使用样例,这里为了方便,我直接拿来使用了。
首先安装相应的包:
pip3 install pybaobabdt pip3 install pygraphviz
安装完成后就可以开始写代码了。
'''
决策树模型
'''
import pybaobabdt
import pandas as pd
from scipy.io import arff
from sklearn.tree import DecisionTreeClassifier
data = arff.loadarff('winequality-red.arff')
df = pd.Dataframe(data[0])
y = list(df['class'])
features = list(df.columns)
features.remove('class')
X = df.loc[:, features]
dt = DecisionTreeClassifier().fit(X,y)
运行结果如下所示:
我是用的JupyterNotebook来运行的代码,可以直接显示出来图片,当然了如果想要保存图片到本地也是可以的,如下代码即可实现:
#保存到本地
ax.get_figure().savefig('tree.png', format='png', dpi=300, transparent=True)
图像内容如下所示:
官方还提供了了自定义colormap的接口,使用起来很方便,如下所示:
from matplotlib.colors import * #也可以自定义 colormap,绘制五彩斑斓的图 colors = ["gray", "gray", "purple", "gray"] colorMap = ListedColormap(colors) ax = pybaobabdt.drawTree(dt, size=10, dpi=72, features=features, colormap=colorMap)
结果如下所示:
颜色列表也可以以数值的形式传入,如下所示:
colors = [[1,0,0], [0,1,0], [0,0,1], [1,1,0]] colorMap = ListedColormap(colors) ax = pybaobabdt.drawTree(dt, size=10, dpi=72, features=features, colormap=colorMap)
结果如下所示:
有一点要注意的是这里的RGBA取值都是0-1。
接下来,我们用这款工具来对随机森林模型进行可视化展示,放在以前,这是不可能的事情,下面是具体的代码实现:
'''
随机森林模型
'''
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)
结果如下所示:
感觉还是很神奇的,虽说这里的可视化并不是自己最开始想象的整合在一起的可视化,而是对每一个子树进行了相应的可视化,但是视觉效果还是很不错的。
感兴趣的话就拿去玩玩看吧。



