机器学习笔记(十)——弹性网络(sklearn)
本博客仅用于个人学习,不用于传播教学,主要是记自己能够看得懂的笔记(
学习知识、资源和数据来自:机器学习算法基础-覃秉丰_哔哩哔哩_bilibili
数据参见博客:机器学习笔记(七)——岭回归(sklearn) - Lcy的瞎bb - 博客园 (cnblogs.com)
弹性网络说白了就是LASSO和岭回归的结合。它的公式最后增加的项为。
在sklearn中,上式中的α默认为0.5,也就是LASSO和岭回归各占一半。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.ElasticNetCV() #利用弹性网的交叉验证法 model.fit(x_data,y_data) print(model.alpha_) #公式中的λ print(model.l1_ratio) #公式中的(1-α) print() print(model.predict(x_data[-2,np.newaxis])) print(y_data[-2]) #预测值与真实值比较
得到结果:
30.31094405430269
0.5
[115.74523947]
115.7
其实正则化还有许多方法,下图给出了比较直观的正则化方法:
参考博客:
线性回归 弹性网络elastic net - 简书 (jianshu.com)
线性回归差不多就到这了。好耶!
下次应该就是逻辑回归了。