Python实现多元线性回归模型(statsmodels OLS算法)项目实战

本文涉及的产品
模型训练 PAI-DLC,100CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: Python实现多元线性回归模型(statsmodels OLS算法)项目实战

说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。

image.png

image.png

1.项目背景

回归问题是一类预测连续值的问题,而能满足这样要求的数学模型称作回归模型,本项目介绍的线性回归就是回归模型中的一种。线性回归模型属于经典的统计学模型,该模型的应用场景是根据已知的变量(即自变量)来预测某个连续的数值变量(即因变量)。例如餐厅根据每天的营业数据(包括菜谱价格、就餐人数、预定人数、特价菜折扣等)预测就餐规模或营业额;网站根据访问的历史数据(包括新用户的注册量、老用户的活跃度、网页内容的更新频率等)预测用户的支付转化率;医院根据患者的病历数据(如体检指标、药物服用情况、平时的饮食习惯等)预测某种疾病发生的概率。本项目应用OLS多元线程回归模型进行广告销售收入的预测分析。 

2.数据获取

本次建模数据来源于网络(本项目撰写人整理而成),数据项统计如下

编号 

变量名称

描述

1

TV

电视渠道

2

Radio

广播渠道

3

Newspaper

报纸渠道

4

Sales

产品销售额

数据详情如下(部分展示):

image.png

3.数据预处理

3.1 用Pandas工具查看数据

使用Pandas工具的head()方法查看前五行数据:

image.png

关键代码:

image.png

3.2数据缺失查看

使用Pandas工具的info()方法查看数据信息:

image.png

从上图可以看到,总共有4个变量,数据中无缺失值。

关键代码:

image.png

 

3.3数据描述性统计

通过Pandas工具的describe()方法来查看数据的平均值、标准差、最小值、分位数、最大值。

image.png

关键代码如下:

image.png

4.探索性数据分析

4.1 Sales变量的折线图

用Matplotlib工具的plot()方法绘制折线图:

image.png

4.2 相关性分析

image.png

从上图中可以看到,数值越大相关性越强,正值是正相关、负值是负相关。

4.3 散点图拟合线分析

image.png

从上面图中可以看到,TV变量和Sales变量成线性相关,在电视渠道投放的广告金额越大,产品的销售额也越大。

5.构建多元线性回归模型

主要使用OLS算法,用于目标回归。

5.1模型构建

关键代码如下:

image.png

模型总结输出:

image.png

结果显示,有两种广告渠道的回归系数为正值(TV和Radio),说明这两种渠道的广告可以给销售额带来正向的支撑,而报纸渠道却无法使销售额得到提升(其回归系数为6.647e-05 无限接近于0)。所以,可以得到多元线性回归模型:

Sales=4.5993+0.0120*TV+0.0134*Radio+6.647e-05*Newspaper

在返回的模型概览中,包含F检验和t检验的结果,其中F统计量值为563.4,对应的概率值p4.64e-93远远小于0.05,说明应该拒绝原假设,认为模型是显著的;在各自变量的t统计量中,唯有Newspaper变量所对应的概率值p(0.928)大于0.05,说明不能拒绝原假设,认为该变量是不显著的,无法认定其是影响销售额的重要因素。

对于F检验来说,如果无法拒绝原假设,则认为模型是无效的,通常的解决办法是增加数据量、改变自变量或选择其他的模型;对于t检验来说,如果无法拒绝原假设,则认为对应的自变量与因变量之间不存在线性关系,通常的解决办法是剔除该变量或修正该变量(如因变量与自变量存在非线性关系时,选择对应的数学转换函数,对其修正处理)。根据返回的fit模型的概览信息,由于Newspaper变量的t检验结果是不显著的,故可以探索其与因变量Sales之间的散点关系,如果二者确实没有线性关系,可以将Newspaper从模型中剔除。

image.png

报纸广告与销售额之间的散点关系图图中自变量Newspaper与因变量Sales之间的散点关系并没有呈现明显的线性关系或非线性关系,故可以认为两者不存在互相依赖关系。既然如此,接下来要做的就是将Newspaper变量从模型中剔除

5.2模型优化

关键代码:

image.png

模型摘要输出:

image.png

多元线性回归模型拟合后的概览信息对模型重新调整后,得到的新模型仍然通过了显著性检验,而且每个自变量所对应的系数也是通过显著性检验的。故最终得到的模型为:

Sales= 4.6084+ 0.0120*TV+ 0.0134*Radio

对于该回归模型中的系数是这样解释的:在其他条件不变的情况下,TV渠道的成本每增加一个单位,将使销售额增加0.0120个单位;广播渠道的成本每增加一个单位,会使销售0.0134个单位。

5.3基于回归模型识别异常点

回归模型其计算过程会依赖于自变量的均值,,均值的最大弊端是其容易受到异常点(或极端值)的影响。所以,如果建模数据中存在异常点,一定程度上会影响到模型的有效性,那么该如何利用模型来识别样本中的异常点,并对其做相应的处理呢?对于线性回归模型来说,通常利用帽子矩阵、DFFITS准则学生化残差进行异常点检测。

学生化残差需要注意的是,在DFFITS准则的公式中,乘积的第二项实际上是学生化残差,它也可以用来判定第i个样本是否为异常点,判断标准如下:

image.png

关键代码:

image.png

image.png

这里使用学生化残差,当学生化残差大于2时,即认为对应的数据点为异常值。结果显示,通过学生化残差识别出了异常值,并且异常比例为3.68%。由于异常比例非常小,故可以考虑将其直接从数据集中删除,由此继续建模将会得到更加稳定且合理的模型。具体代码如下

image.png

模型摘要信息:

image.png

多元线性回归模型的概览信息如图所示,排除异常点之后得到模型,不管是模型的显著性检验还是系数的显著性检验,各自的概率p值均小于0.05,说明它们均通过显著性检验。

5.4模型预测

关键代码:

image.png

预测结果:

image.png

 

6.模型评估

6.1评估指标及结果 

评估指标主要包括可解释方差值、平均绝对误差、均方误差、R方值等等。

模型名称

指标名称

指标值

测试集

OLS多元线性回归模型

可解释方差值

0.9371

平均绝对误差

1.1024

均方误差

1.6381

R方

0.9367

从上表可以看出,R方93.67%%  可解释方差值93.71%,OLS多元线性回归模型比较优秀,效果非常好。

关键代码如下:

image.png

6.2 真实值与预测值对比图

image.png

从上图可以看出真实值和预测值波动基本一致,模型拟合效果非常棒。

7.结论与展望

综上所述,本文采用了OLS多元线性回归模型,最终证明了我们提出的模型效果良好。可用于日常产品销售额的研究。

# 本次机器学习项目实战所需的资料,项目资源如下:
 
# 项目说明:
 
# 获取方式一:
 
# 项目实战合集导航:
 
https://docs.qq.com/sheet/DTVd0Y2NNQUlWcmd6?tab=BB08J2
 
# 获取方式二:
 
链接:https://pan.baidu.com/s/1ab-d_zXbHoaHmgzW-XcZgQ 
提取码:69pa
相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
17天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品消费模式分析的深度学习模型
使用Python实现智能食品消费模式分析的深度学习模型
110 70
|
6天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
115 55
|
6天前
|
机器学习/深度学习 数据可视化 TensorFlow
使用Python实现深度学习模型的分布式训练
使用Python实现深度学习模型的分布式训练
114 73
|
19天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品消费习惯分析的深度学习模型
使用Python实现智能食品消费习惯分析的深度学习模型
121 68
|
16天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
97 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
15天前
|
机器学习/深度学习 数据采集 数据挖掘
使用Python实现智能食品消费市场分析的深度学习模型
使用Python实现智能食品消费市场分析的深度学习模型
91 36
|
9天前
|
机器学习/深度学习 数据采集 供应链
使用Python实现智能食品消费需求分析的深度学习模型
使用Python实现智能食品消费需求分析的深度学习模型
49 21
|
11天前
|
机器学习/深度学习 数据采集 搜索推荐
使用Python实现智能食品消费偏好预测的深度学习模型
使用Python实现智能食品消费偏好预测的深度学习模型
51 23
|
12天前
|
机器学习/深度学习 数据采集 数据挖掘
使用Python实现智能食品消费习惯预测的深度学习模型
使用Python实现智能食品消费习惯预测的深度学习模型
55 19
|
13天前
|
机器学习/深度学习 数据采集 数据挖掘
使用Python实现智能食品消费趋势分析的深度学习模型
使用Python实现智能食品消费趋势分析的深度学习模型
70 18
下一篇
DataWorks