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

第四章线性回归算法进阶

4.4岭回归

  岭回归是线性回归算法正则化的两种常用方法,既可以解决过拟合问题,也可解决线性回归求解中多重共线性问题,即避免(XTX)-1不可逆的情况。

4.4.1岭回归的原理

  岭回归是基于最小二乘估计法提出的一种有偏估计方法,是对最小二乘估计法的一种改良。
  为了获得既可靠又切合实际的回归系数,损失部分信息,并降低精度,放弃了最小二乘法的无偏性。
  岭回归就是在残差平方和的基础上增加了参数平方和的正则项,如下所示:

          在这里插入图片描述
  对J(θ)关于θi求偏导,并令其等于0,然后转换为矩阵形式,就可得到下式的求解公式。
              在这里插入图片描述

4.4.2岭参数的取值方式

  • 岭迹图法
  • 控制残差平方和法
  • 方差扩大因子法

4.4.3岭回归的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. 岭回归估计
ridge = linear_model.Ridge(alpha=0.1)
# 使用训练数据进行参数求解
ridge.fit(X_train,y_train)
print('截距项为:{}\n系数为:{}'.format(ridge.intercept_,ridge.coef_))

截距项为:4.35314337580391
系数为:[ 0.37048481 -0.03831273 0.23046337]

  1. 根据求出的参数对测试集进行预测
# 对测试集进行预测
y_hat = ridge.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.8279400477123058
MAE=4.631262902381461
MSE=46.63832870779447
RMSE=6.829226069460175

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值