Python数模笔记-StatsModels 统计回归(4)可视化

 

人工智能学习离不开实践的验证,推荐大家可以多在FlyAI-AI竞赛服务平台多参加训练和竞赛,以此来提升自己的能力。FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台。每周免费提供项目开源算法样例,支持算法能力变现以及快速的迭代算法模型。 

 

1、如何认识可视化?

  图形总是比数据更加醒目、直观。解决统计回归问题,无论在分析问题的过程中,还是在结果的呈现和发表时,都需要可视化工具的帮助和支持。
  
  需要指出的是,虽然不同绘图工具包的功能、效果会有差异,但在常用功能上相差并不是很大。与选择哪种绘图工具包相比,更重要的是针对不同的问题,需要思考选择什么方式、何种图形去展示分析过程和结果。换句话说,可视化只是手段和形式,手段要为目的服务,形式要为内容服务,这个关系一定不能颠倒了。
  
  因此,可视化是伴随着分析问题、解决问题的过程而进行思考、设计和实现的,而且还会影响问题的分析和解决过程:

  • 可视化工具是数据探索的常用手段

    回归分析是基于数据的建模,在导入数据后首先要进行数据探索,对给出的或收集的数据有个大概的了解,主要包括数据质量探索和数据特征分析。数据准备中的异常值分析,往往就需要用到箱形图(Boxplot)。对于数据特征的分析,经常使用频率分布图或频率分布直方图(Hist),饼图(Pie)。

  • 分析问题需要可视化工具的帮助

    对于问题中变量之间的关系,有些可以通过定性分析来确定或猜想,需要进一步的验证,有些复杂关系难以由分析得到,则要通过对数据进行初步的相关分析来寻找线索。在分析问题、尝试求解的过程中,虽然可以得到各种统计量、特征值,但可视化图形能提供更快捷、直观、丰富的信息,对于发现规律、产生灵感很有帮助。

  • 解题过程需要可视化工具的支持

    在解决问题的过程中,也经常会希望尽快获得初步的结果、总体的评价,以便确认解决问题的思路和方法是否正确。这些情况下,我们更关心的往往是绘图的便捷性,图形的表现效果反而是次要的。

  • 可视化是结果发布的重要内容

    问题解决之后需要对结果进行呈现或发表,这时则需要结合表达的需要,特别是表达的逻辑框架,设计可视化的方案,选择适当的图形种类和形式,准备图形数据。在此基础上,才谈得上选择何种绘图工具包,如何呈现更好的表现效果。

 

2、StatsModels 绘图工具包 (Graphics)

  Statsmodels 本身支持绘图功能(Graphics),包括拟合图(Fit Plots)、箱线图(Box Plots)、相关图(Correlation Plots)、函数图(Functional Plots)、回归图(Regression Plots)和时间序列图(Time Series Plots)。
  
  Statsmodels 内置绘图功能 Graphics 的使用似乎并不流行,网络上的介绍也不多。分析其原因,一是 Graphics 做的并不太好用,文档和例程不友好,二是学习成本高:能用通用的可视化包实现的功能,何必还要花时间去学习一个专用的 Graphics?
  
  下面是 Statsmodels 官方文档的例程,最简单的单变量线性回归问题,绘制样本数据散点图和拟合直线图。Graphics 提供了将拟合与绘图合二为一的函数 qqline(),但是为了绘制出样本数据则要调用 Matplotlib 的 matplotlib.pyplot.scatter(),所以...

import statsmodels.api as sm
import matplotlib.pyplot as plt
from statsmodels.graphics.gofplots import qqline

foodexp = sm.datasets.engel.load(as_pandas=False)
x = foodexp.exog
y = foodexp.endog

ax = plt.subplot(111)
plt.scatter(x, y)
qqline(ax, "r", x, y)
plt.show()

 

  右图看起来有点象 Seaborn中的 relplot,但把官方文档研究了半天也没搞明白,只好直接分析例程和数据,最后的结论是:基本没啥用。

  这大概就是更多用户直接选择 Python 的可视化工具包进行绘图的原因吧。最常用的当属 Matplotlib 无疑,而在统计回归分析中 Seaborn 绘图工具包则更好用更炫酷。

 

 

3、Matplotlib 绘图工具包

  Matplotlib 绘图包就不用介绍了。Matplotlib 用于 Statsmodels 可视化,最大的优势在于Matplotlib 谁都会用,实现统计回归的基本图形的也很简单。如果需要复杂的图形,炫酷的效果,虽然 Matplotlib 原理上也能实现,但往往需要比较繁琐的数据准备,并不常用的函数和参数设置。既然学习成本高,出错概率大,就没必要非 Matplotlib 不可了。

  Matplotlib 在统计回归问题中经常用到的是折线图、散点图、箱线图和直方图。这也是 Matplotlib 最常用的绘图形式,本系列文中也有相关例程,本文不再具体介绍相关函数的用法。

  例如,在本系列《Python学习笔记-StatsModels 统计回归(2)线性回归》的例程和附图,不仅显示了原始检测数据、理论模型数据、拟合模型数据,而且给出了置信区间的上下限,看起来还是比较“高级”的。但是,如果把置信区间的边界线隐藏起来,图形马上就显得不那么“高级”,比较“平常”了——这就是选择什么方式、何种图形进行展示的区别。

 

  由此所反映的问题,还是表达的逻辑和数据的准备:要表达什么内容,为什么要表达这个内容,有没有相应的数据?问题的关键并不是什么工具包或什么函数,更不是什么颜色什么线性,而是有没有置信区间上下限的数据。

  如果需要复杂的图形,炫酷的效果,虽然 Matplotlib 原理上也能实现,但往往需要比较繁琐的数据准备,使用并不常用的函数和参数设置。学习成本高,出错概率大,就没必要非 Matplotlib 不可了。
  

 

4、Seaborn 绘图工具包

  Seaborn 是在 Matplotlib

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值