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

本文涉及的产品
模型训练 PAI-DLC,100CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 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)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
1月前
|
算法 搜索推荐 JavaScript
基于python智能推荐算法的全屋定制系统
本研究聚焦基于智能推荐算法的全屋定制平台网站设计,旨在解决消费者在个性化定制中面临的选择难题。通过整合Django、Vue、Python与MySQL等技术,构建集家装设计、材料推荐、家具搭配于一体的一站式智能服务平台,提升用户体验与行业数字化水平。
|
2月前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
176 26
|
2月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
193 2
|
2月前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
|
2月前
|
机器学习/深度学习 资源调度 算法
遗传算法模型深度解析与实战应用
摘要 遗传算法(GA)作为一种受生物进化启发的优化算法,在复杂问题求解中展现出独特优势。本文系统介绍了GA的核心理论、实现细节和应用经验。算法通过模拟自然选择机制,利用选择、交叉、变异三大操作在解空间中进行全局搜索。与梯度下降等传统方法相比,GA不依赖目标函数的连续性或可微性,特别适合处理离散优化、多目标优化等复杂问题。文中详细阐述了染色体编码、适应度函数设计、遗传操作实现等关键技术,并提供了Python代码实现示例。实践表明,GA的成功应用关键在于平衡探索与开发,通过精心调参维持种群多样性同时确保收敛效率
|
2月前
|
机器学习/深度学习 边缘计算 人工智能
粒子群算法模型深度解析与实战应用
蒋星熠Jaxonic是一位深耕智能优化算法领域多年的技术探索者,专注于粒子群优化(PSO)算法的研究与应用。他深入剖析了PSO的数学模型、核心公式及实现方法,并通过大量实践验证了其在神经网络优化、工程设计等复杂问题上的卓越性能。本文全面展示了PSO的理论基础、改进策略与前沿发展方向,为读者提供了一份详尽的技术指南。
粒子群算法模型深度解析与实战应用
|
2月前
|
机器学习/深度学习 数据采集 传感器
【WOA-CNN-LSTM】基于鲸鱼算法优化深度学习预测模型的超参数研究(Matlab代码实现)
【WOA-CNN-LSTM】基于鲸鱼算法优化深度学习预测模型的超参数研究(Matlab代码实现)
195 0
|
2月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
176 0
|
2月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
270 102

推荐镜像

更多