自实现-Lasso回归、岭回归

【代码】自写代码-实现岭回归

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



自实现一个岭回归模型,只需按公式计算岭回归模型的确即可

本文展示如何自实现一个岭回归模型,包括对数据中心化,并通过反中心化来得到阈值

通过本文,可以了解岭回归模型的自实现代码,进一步加深对岭回归模型的理解





    03. 自写代码-实现岭回归    




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




    自写代码求解岭回归   


现有数据以下,需要我们建立岭模型,用变量 x1,x2 预测y
 
代码例子所使用的数据
 备注:以上数据的实际关系为:   
下面实现一个带阈值的岭回归模型
 根据《岭回归-算法流程》的求解流程,  python代码如下:
# 本代码展示如何自实现岭回归
# 转载请说明来自 《老饼讲解机器学习》 www.bbbdata.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

# 参数设置
alpha = 1                                                     # 设置惩罚系数alpha
#--------------------模型求解----------------
# 计算数据的中心点
xm    = x.mean(axis=0)                                        # x的中心点
ym    = y.mean(axis=0)                                        # y的中心点

#将数据进行中心化,再用公式求解基础岭回归的权重
X = x - xm                                                    # 对x进行中心化
Y = y - ym                                                    # 对y进行中心化
w = np.linalg.inv(X.T@X+np.eye(x.shape[1])*alpha)@X.T@Y       # 用公式求解权重

# 计算原始数据对应的模型阈值
b = ym-(w@xm)                                                 # 计算模型阈值

#输出模型系数和阈值
print("当前alpha:"+str(alpha))
print("模型参数:"+str(w))
print("模型阈值:"+str(b))
运行结果如下
当前alpha:1                                       
模型参数:[1.97256098 2.72865854]
模型阈值:2.7469512195121943      
可以看到,它的实现效果与《sklearn实现岭回归》的结果是一致的
这侧面说明这与sklearn内部的实现基本是一样的







好了,以上就是如何自实现一个岭回归模型的代码了~










 End 





内容纠正