机器学习第四章线性回归算法进阶4.5Lasso回归(《大话Python机器学习》学习笔记)

第四章线性回归算法进阶

4.5Lasso回归

  Lasso回归与岭回归类似,差别在于使用了不同的正则化项,由于引入正则项不同,解决了岭回归的一些不足,更好地实现了回顾估计法。

4.5.1Lasso回归原理

  Lasso回归是让回归系数不要太大,以免造成过度拟合。
  与岭回归不同的是,Lasso是在成本函数J(θ)中增加参数绝对值和的正则项:
        在这里插入图片描述
  岭回归中加入了参数平方和的约束惩罚项(L2正则化)
  Lasso回归中加入了参数绝对值和的约束惩罚项(L1正则化)
        在这里插入图片描述

在这里插入图片描述

  • 等高线图表示残差平方和的等高线。
      残差在最小二乘估计出最小。

  • 阴影部分分别是岭回归和Lasso回归的限制区域。
      圆形为岭回归的,方形为Lasso回归的。

  • 这两种带有惩罚项的方法都是要找到第一个落到限制区域上的等高线的那个位置的坐标。

4.5.2Lasso回归的参数求解

  • 通常采用坐标下降法来求解参数估计值。

4.5.3Lasso回归的Python实现:影厅观影人数的拟合(四)

  1. 导入数据、划分数据集
df = pd.read_csv('D:/PythonProject/machine/data/3_film.csv')
# 选取data中的X变量
X = df.iloc[:,1:4]
# 设定target为y
y = df.filmnum
# 把X,y转换为数组的形式,便于计算
X = np.array(X.values)
y = np.array(y.values)
# 以25%的数据构建测试样本,其余作为训练样本
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.25,random_state=1)


  1. Lasso回归估计
lasso = linear_model.Lasso(alpha=0.1)
lasso.fit(X_train,y_train)
print('截距项为:{}\n系数为:{}'.format(lasso.intercept_,lasso.coef_))

截距项为:4.358584829813829
系数为:[ 0.36999035 -0.03494547 0.22750781]

  1. 根据求出的参数对测试集进行预测
# 对测试集进行预测
y_hat = lasso.predict(X_test)


  1. 对测试集响应变量实际值与预测集的比较
# 设置图片尺寸
plt.figure(figsize=(10,6))
# 创建t变量
t = np.arange(len(X_test))
# 绘制y_test曲线
plt.plot(t,y_test,'r',linewidth=2,label='y_test')
# 绘制y_hat曲线
plt.plot(t,y_hat,'g',linewidth=2,label='y_hat')
# 设置图例
plt.legend()
plt.show()

在这里插入图片描述

  1. 对预测结果进行评价
# 拟合优度R2的输出方法二
print('r2_2={}'.format(r2_score(y_test,y_hat)))
# 计算MAE
print('MAE={}'.format(metrics.mean_absolute_error(y_test,y_hat)))
# 计算MSE
print('MSE={}'.format(metrics.mean_squared_error(y_test,y_hat)))
# 计算RMSE
print('RMSE={}'.format(np.sqrt(metrics.mean_squared_error(y_test,y_hat))))


r2_2=0.8276541436150417
MAE=4.638494755480021
MSE=46.71582547034623
RMSE=6.834897619595061

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值