本博客仅用于个人学习,不用于传播教学,主要是记自己能够看得懂的笔记(
学习知识、资源和数据来自:机器学习算法基础-覃秉丰_哔哩哔哩_bilibili
数据参见博客:机器学习笔记(七)——岭回归(sklearn) - Lcy的瞎bb - 博客园 (cnblogs.com)
LASSO与岭回归不同的是,LASSO的正则化所加的一项不是平方和,而是绝对值和,所以在标准方程公式后面加上的是。
因此,有两种正则化的方式:
具体的区别可见上面的B站视频。提一嘴,只有两个特征时,LASSO的限制区域是个正方形(|x|+|y|<=t),岭回归限制区域是个圆(x^2+y^2<=t),所以LASSO更容易取到0。
简单的Python代码如下:
import numpy as np from sklearn import linear_model data=np.genfromtxt('C:/Users/Lenovo/Desktop/学习/机器学习资料/线性回归以及非线性回归/longley.csv',delimiter=',') x_data=data[1:,2:] y_data=data[1:,1] model=linear_model.LassoCV() #直接调用Lasso的交叉验证算法。它可以自己生成100个alpha进行测试 model.fit(x_data,y_data) print(model.alpha_) print(model.coef_) #w向量 print(model.predict(x_data[2,np.newaxis])) print(y_data[2]) #预测值与真实值比较
得到结果:
14.134043936116361
[0.10093575 0.00586331 0.00599214 0. 0. 0. ]
[88.28839098]
88.2