Python一元和多元线性回归模型的原理及评估【附代码】

本文详细介绍了线性回归模型,包括一元线性回归的定义、数学原理,以及如何使用Scikit-learn进行代码实现。文章还涵盖了模型评估方法,如R-squared、模型可视化,并通过实例探讨了不同行业工作年限与收入的关系以及客户价值预测模型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.一元线性回归

(1)线性回归模型的定义

(2)一元线性回归的数学原理

(3)一元线性回归的代码实现

1.绘制散点图

2. 引入Scikit-learn库搭建模型

3.模型预测

4.模型可视化

5.线性回归方程构造

(4)案例:不同行业工作年限与收入的线性回归模型

1.案例背景

2.读取数据

3.模型搭建

4.模型可视化

5.线性回归方程构造

6.补充:一元多线性回归

2.线性回归模型评估

(1)模型评估的编程实现

(2)模型评估的数学原理

1.R-squared的理解

2.Adj. R-squared的理解(过拟合与欠拟合)

3.P值的理解

3.多元线性回归

(1)多元线性回归的数学原理和代码实现

(2)案例:客户价值预测模型

1.案例背景

2.读取数据

3.模型搭建

4.线性回归方程构造

5.模型评估


1.一元线性回归

(1)线性回归模型的定义

        线性回归模型是利用线性拟合的方式来探寻数据背后的规律,如下图所示,就是通过搭建线性回归模型来寻找这些散点(也称样本点)背后的趋势线(也称回归曲线),而通过这个回归曲线我们就能进行一些简单的预测分析或因果关系分析。

       线性回归中,我们根据特征变量(也称自变量)来对反应变量(也称因变量)进行预测,根据特征变量的个数可将线性回归模型分为一元线性回归和多元线性回归。通过一个特征变量:工作年限对收入进行预测,就属于一元线性回归;通过多个特征变量:工作年限、行业、所在城市等对收入进行预测,就属于多元线性回归。这一小节主要先讲解下一元线性回归模型。

(2)一元线性回归的数学原理

       一元线性回归模型也称为简单线性回归模型,其形式可以通过如下公式表达

       其中y为因变量,x为自变量,a表示回归系数,b表示截距。其中y^{i}实际值,\hat{y}^{i}为预测值,一元线性回归的目的就是拟合出一条线来使得预测值和实际值尽可能的接近,如果大部分点都落在拟合出来的线上,那么该线性回归模型则拟合较好。

       我们通过两者差值的平方和(该和也称为残差平方和)来进行衡量,公式如下,其中∑为求和符号。此外,补充说明一句,在机器学习领域,该残差平方和也被称之为回归模型的损失函数。

       显然我们希望这个和越小越好,这样实际值和预测值就更加接近,而数学上求最小值的方法为求导数,当导数为0时,该残差平方和最小。那么通过对残差平方和进行求导,然后令其导数为0便可以求得一元线性回归模型的系数a和截距b,这个便是一元线性回归的数学原理,学术上称其为最小二乘法。而在Python中就有专门的库来求解这里的系数a和截距b,而不需要我们去计算复杂的数学公式。

(3)一元线性回归的代码实现

1.绘制散点图

       首先通过Matplotlib库先绘制几个散点,代码如下:

X=[[1],[2],[3],[4],[5]]
Y=[2,4,6,8]

       其中自变量集合X需要写成二维结构形式,也即大列表里包含着小列表,这个其实是符合之后多元回归的逻辑,因为多元回归,一个因变量y可能对应着多个自变量x,比如对于三元线性回归(即有三个特征变量),此时的自变量集合X就需要写成类似如下形式:

X=[[1,2,3],[2,4,5],[4,6,8],[5,7,9]]

       此时的散点如下图所示(附代码):

import matplotlib.pyplot as plt
X = [[1], [2], [4], [5]]
Y = [2, 4, 6, 8]
plt.scatter(X, Y)
plt.show()

2. 引入Scikit-learn库搭建模型

       有了原始数据后,引入Scikit-learn库便可快速搭建线性回归模型,代码如下:

from sklearn.linear_model import LinearRegression
regr = LinearRegression()
regr.fit(X,Y)
3.模型预测

       regr已经是搭建好的模型了,此时就可以通过该模型来预测数据了,比如自变量是数字1.5,那么通过predict()函数就能预测当自变量x=1.5时对应的因变量y了,代码如下

y = regr.predict([[1.5]])
print(y)

       注意这里的自变量还是得写成二维结构的形式,原理和之前绘制散点图时写成二维结构数据类似,此时获得的预测结果y如下所示,此时获得y为一个一维数组。     

[2.9]

        此外,如果想同时预测多个自变量,则可以使用如下代码

y = regr.predict([[1.5], [2.5], [4.5]])
print(y)

       此时的预测结果如下:

[2.9 4.3 7.1]
4.
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值