老饼讲解:一步一步上手学习
自实现一个岭回归模型,只需按公式计算岭回归模型的确即可,本文展示如何自实现一个岭回归模型,包括对数据中心化,并通过反中心化来得到阈值,通过本文,可以了解岭回归模型的自实现代码,进一步加深对岭回归的理解。
本节展示如何自写代码来实现岭回归模型。
下面实现一个带阈值的岭回归模型,根据《岭回归-算法流程》的求解流程,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
# 参数设置
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)) # 打印alpha
print("模型参数:"+str(w)) # 打印模型系数
print("模型阈值:"+str(b)) # 打印模型阈值运行结果如下:

可以看到,它的结果与《岭回归-sklearn实现》的结果是一致的,侧面说明这与sklearn内部的实现基本是一样的。
从代码中可以看出,自实现岭回归是非常简单的,只需要先中心化数据,再按公式求出系数,最后再计算出阈值就可以了,只要理解公式的原理,基本就没什么问题了。
评论