自实现-Lasso回归、岭回归

【代码】自写代码-实现线性回归

作者 : 老饼 发表日期 : 2023-11-09 03:33:19 更新日期 : 2025-04-18 13:14:22
本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com



线性回归模型可以直接使用最小二乘法进行求解,也可以利用QR分解来优化计算量

本文展示如何自写代码实现线性回归模型的求解,包括最小二乘法与QR分解法

通过本文可以具体的掌握线性回归模型的实现原理,以及代码实现方法,从而加深理解




    01. 自写代码-实现线性回归    





本节展示如何自写代码来实现线性回归模型





    自写代码-求解线性回归   


现有数据以下,需要我们建立线性模型,用变量 预测
 
例子数据
 以上数据的实际关系为:
,等下可以回头看看求解结果是否与它一致
 
线性回归模型使用最小二乘法进行求解, 最小二乘法求解公式如下:
 
 按上述公式编写代码进行求解即可,具体python代码实现如下:
import numpy as np
#输入数据
x = np.array([[0, 2], [1, 1], [2,3],[3,2],[4,5],[5,2]]) 
y = np.array([8,7,15,14,25,18])
# 给x添加一列1
xt = np.insert(x, x.shape[1], 1, axis=1)
#按公式求解w,其中inv的功能是求矩阵的逆,@是矩阵的乘法
w = np.linalg.inv(xt.T@xt)@xt.T@y
#输出W
print("模型参数W:"+str(w))
运行结果如下
 
模型参数W:[2. 3. 2.]

 
即代表模型为:
 
 
 
可见,模型的求解是有效的






    自写代码-求解线性回归-QR分解法     


线性回归除了使用最小二乘法求解,还可以加入QR分解来简化计算量
  QR分解方法求解最小二乘解的公式如下:
  
  其中,Q和R由X进行QR分解得到
 根据上述公式,先对X进行QR分解,再按公式计算W即可
  具体python代码实现如下:
"""
本代码展示QR分解来求解线性回归的python代码实现
本代码来自《老饼讲解-机器学习》www.bbbdata.com
"""
import numpy as np
#输入数据
x = np.array([[0, 2], [1, 1], [2,3],[3,2],[4,5],[5,2]]) 
y = np.array([8,7,15,14,25,18])

# 用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))                  # 输出W
运行结果如下:
 
代码运行结果
QR分解法得到的结果,与单纯的使用最小二乘法的结果是一样的








好了,以上就是如何自写代码来实现线性回归模型的求解了~











  End  





内容纠正