机器学习中非常重要的一环就是数据的可视化分析,从源数据的可视化到结果数据的可视化都离不开可视化工具的使用,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: 用随机邻域嵌入来投射文档
... 以及更多!Visualizers随时在增加中,请务必查看示例(甚至是 develop branch 上的),并且随时欢迎你对Visualizers贡献自己的想法。

这里以癌症数据集为例绘制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)

结果如下:

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

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

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)

结果如下:

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

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

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)

结果如下: 

这样的结果展现方式还是比较美观的,在使用的时候发现了这个模块的一个不足的地方,就是:如果连续绘制两幅图片的话,第一幅图片就会累加到第二幅图片中去,多幅图片绘制亦是如此,在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)

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

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)

结果如下:

基于共享单车数据使用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)

结果如下:

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

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)

结果如下:

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

python可视化利器Yellowbrick实践相关推荐

  1. Python可视化神器Yellowbrick使用

    ♚ 作者:沂水寒城,CSDN博客专家,个人研究方向:机器学习.深度学习.NLP.CV Blog: http://yishuihancheng.blog.csdn.net 在机器学习.数据挖掘领域里面, ...

  2. python可视化神器_详解Python可视化神器Yellowbrick使用

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

  3. 3000字/16张炫酷动态图,推荐一款好用到爆的Python可视化利器

    一般提及数据可视化,会Python的读者朋友可能第一时间想到的就是matplotlib模块或者是seaborn模块,而谈及绘制动态图表,大家想到的比较多的是Plotly或者是Pyecharts. 今天 ...

  4. 【机器学习】机器学习可视化利器--Yellowbrick

    本文分享机器学习工具Scikit-Learn强力扩展yellowbrick. 通过几行代码可视化特征值.模型.模型评估等,帮助更便捷的的选择机器学习模型和调参,依赖Matplotlib和Scikit- ...

  5. 16 个动态图!一款好用到爆的 Python 可视化利器

    一般提及数据可视化,会Python的读者朋友可能第一时间想到的就是matplotlib模块或者是seaborn模块,而谈及绘制动态图表,大家想到的比较多的是Plotly或者是Pyecharts. 今天 ...

  6. 16 个动态图:一款好用到爆的 Python 可视化利器

    一般提及数据可视化,会Python的读者朋友可能第一时间想到的就是matplotlib模块或者是seaborn模块,而谈及绘制动态图表,大家想到的比较多的是Plotly或者是Pyecharts. 今天 ...

  7. Pygal,可导出矢量图的Python可视化利器

    Python有很多优秀的可视化库,其中有名的像matplotlib.seaborn.plotly,可以绘制出各式绚丽的图表. 这次介绍一个不那么广为人知但依然优秀的可视化库-Pygal 官网介绍说Py ...

  8. Python可视化利器 — pyecharts 结合爬虫对数据进行分析生成各种可视化图形

    用 pyecharts 对爬虫后的数据进行可视化处理(生成饼图.柱状图.地理位置图.3D旋转动图.词云图)及地图问题的解决 首先,pyecharts 是一款融合了Python和echarts技术的强大 ...

  9. python语言实现lassocv中的可视化显示_Python可视化神器Yellowbrick使用

    码农那点事儿 关注我们,一起学习进步 作者:Together_CZ 链接:https://blog.csdn.net/Together_CZ/article/details/86640784 在机器学 ...

  10. python机器学习可视化工具Yellowbrick介绍及平行坐标图实战示例

    python机器学习可视化工具Yellowbrick介绍及平行坐标图实战示例 目录 python机器学习可视化工具Yellowbrick介绍及平行坐标图实战示例 yellowbrick简介及安装

最新文章

  1. Angular多个页面引入同一个组件报错The Component ‘MyComponentComponent‘ is declared by more than one NgModule怎么办?
  2. 影像组学视频学习笔记[44(End)]-带95%置信区间的折线图、Li‘s have a solution and plan.
  3. VUE2.0开发环境安装
  4. CSDN的Markdown编辑器的使用
  5. windows下的NTP服务
  6. 【20171025早】alert(1) to win 练习
  7. wpf 点击按钮弹出选择框_WPF-PopupWindow wpf右下角弹出框,通过按钮调用,类似QQ CSharp C#编程 238万源代码下载- www.pudn.com...
  8. 使用CSVDE批量导入命令/出口AD用户
  9. git灰度发布版本_spring cloud灰度发布
  10. java项目描述_111个知名Java项目集锦(包括url和描述)
  11. 一、tomcat9解压后运行startup.bat闪退
  12. Go语言grpc proto生成pb文件
  13. 会议平板一体机常见触摸屏幕故障分析与解决
  14. 将pdf文档转换成高清图片
  15. DDS产生波形及AM 调制解调原理
  16. 穷不坑朋友,富不忘恩人!
  17. IIS站点配置和DW CS6连接Access数据库
  18. 百度Ai实现网络图片文字识别--Java
  19. lammps npt系综iso和aniso控压对比
  20. EC11编码器和单片机通信

热门文章

  1. MINIEYE完成B轮融资,四维图新基金战略领投
  2. 又是一个github吗? Kubernetes 初创公司 Heptio被VMware 收购
  3. CHAPTER 28 VMX SUPPORT FOR ADDRESS TRANSLATION
  4. Virtualbox以及VWare在Win10下的不兼容
  5. 07-图5 Saving James Bond - Hard Version
  6. Swift 面向协议编程入门
  7. Javascript多线程引擎(五)
  8. vue组件(Vue+webpack项目实战系列之三)
  9. [工具]PyCharm激活、注册码无效解决办法
  10. VIM 技巧 (二)查找与替换