机器学习笔记(十)——弹性网络(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)

线性回归差不多就到这了。好耶!

下次应该就是逻辑回归了。

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