Python机器学习|广义线性模型(4) | 套索回归

"""
套索回归(lasso)
l1正则化的线性模型
L1正则化会导致在使用套索回归的时候,有一部分特征的系数会正好等于0,即有些特征会被彻底忽略掉
可以突出体现模型中最重要的那些特征
"""
# 导入套索回归
from sklearn.datasets import load_diabetes
from sklearn.linear_model import Lasso
# 载入糖尿病数据集
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
import numpy as np

X, y = load_diabetes().data, load_diabetes().target
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=8)
# 使用套索回归拟合数据
lasso = Lasso().fit(X_train, y_train)
print("训练数据集得分:{:.2f}".format(lasso.score(X_train, y_train)))
print("测试数据集得分:{:.2f}".format(lasso.score(X_test, y_test)))
print("套索回归使用的特征数:{}".format(np.sum(lasso.coef_ != 0)))

训练数据集得分:0.36
测试数据集得分:0.37
套索回归使用的特征数:3

套索回归在训练数据集和测试数据集的得分都相当糟糕,这意味着我们的模型发生了欠拟合的问题。
在10个特征里,套索回归只用了3个。
与岭回归类似,套索回归也有一个正则化参数alpha,用来控制特征变量系数被约束到0的强度。

"""
套索回归的参数调节
"""
# 增加最大迭代次数的默认设置
# 否则模型会提示我们增加最大迭代次数
lasso01 = Lasso(alpha=0.1, max_iter=100000).fit(X_train, y_train)
print("训练数据集得分:{:.2f}".format(lasso01.score(X_train, y_train)))
print("测试数据集得分:{:.2f}".format(lasso01.score(X_test, y_test)))
print("套索回归使用的特征数:{}".format(np.sum(lasso01.coef_ != 0)))

训练数据集得分:0.52
测试数据集得分:0.48
套索回归使用的特征数:7

"""
套索回归与岭回归的对比
"""
lasso0001 = Lasso(alpha=0.001, max_iter=100000).fit(X_train, y_train)
ridge01 = Ridge(alpha=0.1).fit(X_train, y_train)
# 绘制alpha=1时的模型系数
plt.plot(lasso.coef_, 's', label='lasso alpha=1')
# 绘制alpha=0.1时的模型系数
plt.plot(lasso01.coef_, '^', label='lasso alpha=0.1')
# 绘制alpha=0.0001时的模型系数
plt.plot(lasso0001.coef_, 'v', label='lasso alpha=0.0001')
# 绘制岭回归的系数作为对比
plt.plot(ridge01.coef_, 'o', label='Ridge alpha=0.1')
plt.legend(ncol=2, loc=(0,1.05))
plt.ylim(-1000,1000)
plt.xlabel("coefficient index")
plt.ylabel("coefficient magnitude")
plt.show()

在这里插入图片描述
在实践中,岭回归往往是这两个模型中的优选。
但是如果你的数据特征过多,而且其中只有一小部分是真正需要的,那么套索回归就是更好的选择。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值