详解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 代码效率的方法
Jul 03 Python
Linux环境下MySQL-python安装过程分享
Feb 02 Python
python3将视频流保存为本地视频文件
Jun 20 Python
python 堆和优先队列的使用详解
Mar 05 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
Mar 13 Python
Python进程间通信Queue消息队列用法分析
May 22 Python
python字典改变value值方法总结
Jun 21 Python
cProfile Python性能分析工具使用详解
Jul 22 Python
python读写Excel表格的实例代码(简单实用)
Dec 19 Python
Python turtle画图库&&画姓名实例
Jan 19 Python
Pytorch 使用不同版本的cuda的方法步骤
Apr 02 Python
python之openpyxl模块的安装和基本用法(excel管理)
Feb 03 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
用js判断用户浏览器是否是XP SP2的IE6
2007/03/08 Javascript
JQuery 构建客户/服务分离的链接模型中Table分页代码效率初探
2010/01/22 Javascript
基于jQuery的消息提示插件之旅 DivAlert(三)
2010/04/01 Javascript
javascript基础知识大集锦(二) 推荐收藏
2011/01/13 Javascript
js 创建书签小工具之理论
2011/02/25 Javascript
基于jquery实现状态限定编辑的代码
2012/02/11 Javascript
JavaScript禁止页面操作的示例代码
2013/12/17 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
2014/01/09 Javascript
使用iframe window的scroll方法控制iframe页面滚动
2014/03/05 Javascript
VS2008中使用JavaScript调用WebServices
2014/12/18 Javascript
JavaScript中的console.time()函数详细介绍
2014/12/29 Javascript
jquery实现键盘左右翻页特效
2015/04/30 Javascript
vue.js之vue-cli脚手架的搭建详解
2017/05/05 Javascript
基于VUE选择上传图片并页面显示(图片可删除)
2017/05/25 Javascript
Angular4学习笔记之新建项目的方法
2017/07/18 Javascript
React教程之Props验证的具体用法(Props Validation)
2017/09/04 Javascript
BetterScroll 在移动端滚动场景的应用
2017/09/18 Javascript
手动用webpack搭建第一个ReactApp的示例
2018/04/11 Javascript
工作中常用到的ES6语法
2018/09/04 Javascript
基于vue2的canvas时钟倒计时组件步骤解析
2018/11/05 Javascript
layui复选框的全选与取消实现方法
2019/09/02 Javascript
JQuery样式与属性设置方法分析
2019/12/07 jQuery
vue-property-decorator用法详解
2019/12/12 Javascript
python UNIX_TIMESTAMP时间处理方法分析
2016/04/18 Python
python配置grpc环境
2019/01/01 Python
提升python处理速度原理及方法实例
2019/12/25 Python
使用Keras建立模型并训练等一系列操作方式
2020/07/02 Python
用python查找统一局域网下ip对应的mac地址
2021/01/13 Python
总经理职责
2013/12/22 职场文书
学校安全责任书
2014/04/14 职场文书
党员干部廉洁承诺书
2014/05/28 职场文书
司法所长先进事迹
2014/06/02 职场文书
党员学习党的群众路线思想汇报(5篇)
2014/09/10 职场文书
公司授权委托书格式范文
2014/10/02 职场文书
民用住房租房协议书
2014/10/29 职场文书
正确使用MySQL update语句
2021/05/26 MySQL