目录
老饼讲解:一步一步上手学习

【代码】线性回归模型-代码复现

作者 : 老饼 发表日期 : 2026-01-07 08:16:25 更新日期 : 2026-05-21 22:00:34
老饼讲解-简单易懂,干货满满,爽过嗦螺!


这节我们自己编写代码来求解线性回归模型,线性回归模型可以直接使用最小二乘法进行求解,也可以利用QR分解来优化计算量,下面我们分别展示两种方法的具体实现代码。

一、线性回归模型-训练-自实现

现有数据以下

样本数据

 以上数据的实际关系为:,等下可以回头看看求解结果是否与它一致

下面我们不借助软件包,自己实现线性回归模型的训练。这里我们展示两种方法,一种是纯粹的最小二乘法,另一种是结合了QR分解的最小二乘法。

1.1. 线性回归-求解-最小二乘法

线性回归模型一般使用最小二乘法进行求解, 最小二乘法求解公式如下:

 

 按上述公式编写代码进行求解即可,具体python代码实现如下:

"""
本代码展示用最小二乘法训练线性回归模型
本代码来自《老饼讲解-机器学习》www.bbblearn.com
"""
import numpy as np
# 训练数据
x = np.array([[0, 2], [1, 1], [2,3],[3,2],[4,5],[5,2]])  # 输入数据X
y = np.array([8,7,15,14,25,18])                          # 输出数据y

# 用最小二乘法求解线性回归
xt = np.insert(x, x.shape[1], 1, axis=1)                 # 给x添加一列1
w = np.linalg.inv(xt.T@xt)@xt.T@y                        # 按公式求解w

# 打印结果
print("模型参数W:"+str(w))                              # 打印模型参数

代码运行结果如下:

模型参数

即代表模型为:

这与数据的实际关系是一致的,可见,模型的求解是有效的。

1.2. 线性回归-求解-最小二乘法(结合QR分解)

线性回归除了使用最小二乘法求解,还可以加入结合QR分解来简化最小二乘法的计算量。

QR分解方法求解最小二乘解的公式如下:

  

其中,Q和R由X进行QR分解得到。

根据上述公式,先对X进行QR分解,再按公式计算W即可。

具体python代码实现如下:

"""
本代码展示用最小二乘法(结合QR分解)训练线性回归模型
本代码来自《老饼讲解-机器学习》www.bbblearn.com
"""
import numpy as np
# 训练数据
x = np.array([[0, 2], [1, 1], [2,3],[3,2],[4,5],[5,2]]) # 输入数据X
y = np.array([8,7,15,14,25,18])                         # 输出数据y

# 用最小二乘法结合QR分解来求解线性回归
xt   = np.insert(x, x.shape[1], 1, axis=1)              # 给x添加一列1
Q, R = np.linalg.qr(xt)                                 # 对x进行QR分解 
w    = np.linalg.inv(R)@Q.T@y                           # 用公式求解模型的系数
print("模型参数W:"+str(w))                             # 打印模型参数

代码运行结果如下:

QR分解得到的模型参数

可以看到,QR分解法得到的结果,与单纯的使用最小二乘法的结果是一样的。

结束语

线性回归的求解,只需按最小二乘法的公式直接进行计算就可以了,但如果要简化计算机底层的计算量,就可以使用结合了QR分解的最小二乘法公式,总的来说,线性回归模型的求解都只是一条公式的事。



图标 评论
添加评论