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

简介: 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+LLaMA Factory微调Qwen2-VL模型,搭建文旅领域知识问答机器人
使用PAI和LLaMA Factory框架,基于全参方法微调 Qwen2-VL模型,使其能够进行文旅领域知识问答,同时通过人工测试验证了微调的效果。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
6月前
|
算法 搜索推荐 JavaScript
基于python智能推荐算法的全屋定制系统
本研究聚焦基于智能推荐算法的全屋定制平台网站设计,旨在解决消费者在个性化定制中面临的选择难题。通过整合Django、Vue、Python与MySQL等技术,构建集家装设计、材料推荐、家具搭配于一体的一站式智能服务平台,提升用户体验与行业数字化水平。
|
7月前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
321 26
|
6月前
|
存储 监控 算法
监控电脑屏幕的帧数据检索 Python 语言算法
针对监控电脑屏幕场景,本文提出基于哈希表的帧数据高效检索方案。利用时间戳作键,实现O(1)级查询与去重,结合链式地址法支持多条件检索,并通过Python实现插入、查询、删除操作。测试表明,相较传统列表,检索速度提升80%以上,存储减少15%,具备高实时性与可扩展性,适用于大规模屏幕监控系统。
197 5
|
7月前
|
机器学习/深度学习 数据采集 并行计算
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
736 2
|
7月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
340 0
|
7月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
975 102
|
7月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
429 104
|
7月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
335 103
|
7月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
278 82
|
6月前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
415 3

热门文章

最新文章

推荐镜像

更多