机器学习笔记(九)——LASSO(sklearn)

本博客仅用于个人学习,不用于传播教学,主要是记自己能够看得懂的笔记(

学习知识、资源和数据来自:机器学习算法基础-覃秉丰_哔哩哔哩_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

posted @ 2021-07-26 16:27  Lcy的瞎bb  阅读(587)  评论(0编辑  收藏  举报