详解Python可视化神器Yellowbrick使用


Posted in Python onNovember 11, 2019

机器学习中非常重要的一环就是数据的可视化分析,从源数据的可视化到结果数据的可视化都离不开可视化工具的使用,sklearn+matplotlib的组合在日常的工作中已经满足了绝对大多数的需求,今天主要介绍的是一个基于sklearn和matplotlib模块进行扩展的可视化工具Yellowbrick。

Yellowbrick的官方文档在这里。Yellowbrick是由一套被称为"Visualizers"组成的可视化诊断工具组成的套餐,其由Scikit-Learn API延伸而来,对模型选择过程其指导作用。总之,Yellowbrick结合了Scikit-Learn和Matplotlib并且最好得传承了Scikit-Learn文档,对 你的 模型进行可视化!

Yellowbrick主要包含的组件如下:

Visualizers
Visualizers也是estimators(从数据中习得的对象),其主要任务是产生可对模型选择过程有更深入了解的视图。从Scikit-Learn来看,当可视化数据空间或者封装一个模型estimator时,其和转换器(transformers)相似,就像"ModelCV" (比如 RidgeCV, LassoCV )的工作原理一样。Yellowbrick的主要目标是创建一个和Scikit-Learn类似的有意义的API。其中最受欢迎的visualizers包括:
 
特征可视化
Rank Features: 对单个或者两两对应的特征进行排序以检测其相关性
Parallel Coordinates: 对实例进行水平视图
Radial Visualization: 在一个圆形视图中将实例分隔开
PCA Projection: 通过主成分将实例投射
Feature Importances: 基于它们在模型中的表现对特征进行排序
Scatter and Joint Plots: 用选择的特征对其进行可视化
分类可视化
Class Balance: 看类的分布怎样影响模型
Classification Report: 用视图的方式呈现精确率,召回率和F1值
ROC/AUC Curves: 特征曲线和ROC曲线子下的面积
Confusion Matrices: 对分类决定进行视图描述
回归可视化
Prediction Error Plot: 沿着目标区域对模型进行细分
Residuals Plot: 显示训练数据和测试数据中残差的差异
Alpha Selection: 显示不同alpha值选择对正则化的影响
聚类可视化
K-Elbow Plot: 用肘部法则或者其他指标选择k值
Silhouette Plot: 通过对轮廓系数值进行视图来选择k值
文本可视化
Term Frequency: 对词项在语料库中的分布频率进行可视化
t-SNE Corpus Visualization: 用随机邻域嵌入来投射文档

这里以癌症数据集为例绘制ROC曲线,如下:

def testFunc1(savepath='Results/breast_cancer_ROCAUC.png'):
 '''
 基于癌症数据集的测试
 '''
 data=load_breast_cancer()
 X,y=data['data'],data['target']
 X_train, X_test, y_train, y_test = train_test_split(X, y)
 viz=ROCAUC(LogisticRegression())
 viz.fit(X_train, y_train)
 viz.score(X_test, y_test)
 viz.poof(outpath=savepath)

结果如下:

详解Python可视化神器Yellowbrick使用

结果看起来也是挺美观的。

之后用平行坐标的方法对高维数据进行作图,数据集同上:

def testFunc2(savepath='Results/breast_cancer_ParallelCoordinates.png'):
 '''
 用平行坐标的方法对高维数据进行作图
 '''
 data=load_breast_cancer()
 X,y=data['data'],data['target']
 print 'X_shape: ',X.shape #X_shape: (569L, 30L)
 visualizer=ParallelCoordinates()
 visualizer.fit_transform(X,y)
 visualizer.poof(outpath=savepath)

结果如下:

详解Python可视化神器Yellowbrick使用

这个最初没有看明白什么意思,其实就是高维特征数据的可视化分析,这个功能还可以对原始数据进行采样,之后再绘图。

基于癌症数据集,使用逻辑回归模型来分类,绘制分类报告

def testFunc3(savepath='Results/breast_cancer_LR_report.png'):
 '''
 基于癌症数据集,使用逻辑回归模型来分类,绘制分类报告
 '''
 data=load_breast_cancer()
 X,y=data['data'],data['target']
 model=LogisticRegression()
 visualizer=ClassificationReport(model)
 X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=42)
 visualizer.fit(X_train,y_train)
 visualizer.score(X_test,y_test)
 visualizer.poof(outpath=savepath)

结果如下:

详解Python可视化神器Yellowbrick使用

这样的结果展现方式还是比较美观的,在使用的时候发现了这个模块的一个不足的地方,就是:如果连续绘制两幅图片的话,第一幅图片就会累加到第二幅图片中去,多幅图片绘制亦是如此,在matplotlib中可以使用plt.clf()方法来清除上一幅图片,这里没有找到对应的API,希望有找到的朋友告知一下。

接下来基于共享单车数据集进行租借预测,具体如下:

首先基于特征对相似度分析方法来分析共享单车数据集中两两特征之间的相似度

def testFunc5(savepath='Results/bikeshare_Rank2D.png'):
 '''
 共享单车数据集预测
 '''
 data=pd.read_csv('bikeshare/bikeshare.csv')
 X=data[["season", "month", "hour", "holiday", "weekday", "workingday",
   "weather", "temp", "feelslike", "humidity", "windspeed"
   ]]
 y=data["riders"]
 visualizer=Rank2D(algorithm="pearson")
 visualizer.fit_transform(X)
 visualizer.poof(outpath=savepath)

详解Python可视化神器Yellowbrick使用

基于线性回归模型实现预测分析

def testFunc7(savepath='Results/bikeshare_LinearRegression_ResidualsPlot.png'):
 '''
 基于共享单车数据使用线性回归模型预测
 '''
 data = pd.read_csv('bikeshare/bikeshare.csv')
 X=data[["season", "month", "hour", "holiday", "weekday", "workingday",
   "weather", "temp", "feelslike", "humidity", "windspeed"]]
 y=data["riders"]
 X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3)
 visualizer=ResidualsPlot(LinearRegression())
 visualizer.fit(X_train, y_train)
 visualizer.score(X_test, y_test)
 visualizer.poof(outpath=savepath)

结果如下:

详解Python可视化神器Yellowbrick使用

基于共享单车数据使用AlphaSelection

def testFunc8(savepath='Results/bikeshare_RidgeCV_AlphaSelection.png'):
 '''
 基于共享单车数据使用AlphaSelection
 '''
 data=pd.read_csv('bikeshare/bikeshare.csv')
 X=data[["season", "month", "hour", "holiday", "weekday", "workingday",
   "weather", "temp", "feelslike", "humidity", "windspeed"]]
 y=data["riders"]
 alphas=np.logspace(-10, 1, 200)
 visualizer=AlphaSelection(RidgeCV(alphas=alphas))
 visualizer.fit(X, y)
 visualizer.poof(outpath=savepath)

结果如下:

详解Python可视化神器Yellowbrick使用

基于共享单车数据绘制预测错误图

def testFunc9(savepath='Results/bikeshare_Ridge_PredictionError.png'):
 '''
 基于共享单车数据绘制预测错误图
 '''
 data=pd.read_csv('bikeshare/bikeshare.csv')
 X=data[["season", "month", "hour", "holiday", "weekday", "workingday",
   "weather", "temp", "feelslike", "humidity", "windspeed"]]
 y=data["riders"]
 X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3)
 visualizer=PredictionError(Ridge(alpha=3.181))
 visualizer.fit(X_train, y_train)
 visualizer.score(X_test, y_test)
 visualizer.poof(outpath=savepath)
blog.csdn.net/Together_CZ/article/details/86640784

结果如下:

详解Python可视化神器Yellowbrick使用

今天先记录到这里,之后有时间继续更新学习!

总结

以上所述是小编给大家介绍的Python可视化神器Yellowbrick使用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python调用java模块SmartXLS和jpype修改excel文件的方法
Apr 28 Python
Python3实现从文件中读取指定行的方法
May 22 Python
Python多图片合并PDF的方法
Jan 03 Python
搞定这套Python爬虫面试题(面试会so easy)
Apr 03 Python
python 实现查询Neo4j多节点的多层关系
Dec 23 Python
python使用HTMLTestRunner导出饼图分析报告的方法
Dec 30 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
Jan 18 Python
用Python在Excel里画出蒙娜丽莎的方法示例
Apr 28 Python
Django使用rest_framework写出API
May 21 Python
sklearn的predict_proba使用说明
Jun 28 Python
基于PyInstaller各参数的含义说明
Mar 04 Python
利用Python多线程实现图片下载器
Mar 25 Python
安装Pycharm2019以及配置anconda教程的方法步骤
Nov 11 #Python
详解Python中打乱列表顺序random.shuffle()的使用方法
Nov 11 #Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
Nov 11 #Python
Python多继承以及MRO顺序的使用
Nov 11 #Python
python 有效的括号的实现代码示例
Nov 11 #Python
Python+OpenCV实现实时眼动追踪的示例代码
Nov 11 #Python
python的pyecharts绘制各种图表详细(附代码)
Nov 11 #Python
You might like
解析PHP生成静态html文件的三种方法
2013/06/18 PHP
php分割合并两个字符串的函数实例
2015/06/19 PHP
javascript算法学习(直接插入排序)
2011/04/12 Javascript
js批量设置样式的三种方法不推荐使用with
2013/02/25 Javascript
jQuery插件pagination实现分页特效
2015/04/12 Javascript
下雪了 javascript实现雪花飞舞
2020/08/02 Javascript
jQuery实现右下角可缩放大小的层完整实例
2016/06/20 Javascript
jQuery代码性能优化的10种方法
2016/06/21 Javascript
js 上传文件预览的简单实例
2016/08/16 Javascript
Angular 常用指令实例总结整理
2016/12/13 Javascript
EditPlus 正则表达式 实战(3)
2016/12/15 Javascript
Node.js EventEmmitter事件监听器用法实例分析
2019/01/07 Javascript
nodejs如何在package.json中设置多条启动命令
2020/03/16 NodeJs
[00:16]热血竞技场
2019/03/06 DOTA
python操作xml文件详细介绍
2014/06/09 Python
Python3.2中Print函数用法实例详解
2015/05/19 Python
Python、PyCharm安装及使用方法(Mac版)详解
2017/04/28 Python
python调用虹软2.0第三版的具体使用
2019/02/22 Python
pycharm重命名文件的方法步骤
2019/07/29 Python
python实现的多任务版udp聊天器功能案例
2019/11/13 Python
文件上传服务器-jupyter 中python解压及压缩方式
2020/04/22 Python
python golang中grpc 使用示例代码详解
2020/06/03 Python
Django Session和Cookie分别实现记住用户登录状态操作
2020/07/02 Python
Pycharm及python安装详细教程(图解)
2020/07/31 Python
Python读取xlsx数据生成图标代码实例
2020/08/12 Python
Python random模块的使用示例
2020/10/10 Python
python 6种方法实现单例模式
2020/12/15 Python
CSS3 绘制BMW logo实的现代码
2013/04/25 HTML / CSS
html5实现滑块功能之type="range"属性
2020/02/18 HTML / CSS
欧洲最大的滑雪假期供应商之一:Sunweb Holidays
2018/01/06 全球购物
城市轨道专业个人求职信范文
2013/09/23 职场文书
入党积极分子评语
2014/05/04 职场文书
2014年民政局关于保密工作整改措施
2014/09/19 职场文书
2014年科研工作总结
2014/12/03 职场文书
创业计划书之o2o水果店
2019/08/30 职场文书
2019年消防宣传标语集锦
2019/11/21 职场文书