线性回归算法(下)

算法篇

线性回归

泛化能力:模型在未见过的数据集上的表现能力
算法目的:模型泛化能力强,尽量降低在训练集上的错误率,最终的目的希望在测试集上有很低的错误

**欠拟合

欠拟合:在训练集上拟合的不够,在训练集上的效果很差,在测试集上的效果也很差,泛化能力弱
原因:

  • 模型过于简单。【适当增加模型的复杂度】
  • 数据集量少。【增加数据量】
  • 特征数量少。【增加特征,或多项式特征处理】
多项式特征处理

多项式特征处理就是最少增加两列,一列是 x 0 x^0 x0,一列是 x 2 x^2 x2
这样就能将线性方程转化为非线性,
多项式特征处理之前: y = w 0 x 0 + w 1 x 1 y=w_0x_0+w1x_1 y=w0x0+w1x1
在这里插入图片描述

多项式特征处理之后: y = w 0 x 0 + w 1 x 1 + w 2 x 2 + w 3 x 3 y=w_0x_0+w_1x_1+w_2x_2+w_3x_3 y=w0x0+w1x1+w2x2+w3x3
( w 0 x 0 w_0x_0 w0x0为b,式中的 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3此时已经变成了 x 0 , x 1 , x 2 x^0,x^1,x^2 x0,x1,x2)
在这里插入图片描述
处理之后的线变成了曲线,就能处理欠拟合的情况了

from sklearn.preprocession import PolynomialFeatures
# 实例化
pf = PolynomialFeatures(degree=2)   # 最大特征大2次方
# 拟合并转化fit_transform
X_new = pf.fit_transform(X)
print('处理后:', X_new)
# 接下来就使用转化后的X_new来进行算法处理

**过拟合

过拟合:在训练集上过分拟合,在训练集上效果很好,但是在测试集上效果很差,泛化能力弱
原因:

  • 模型过于复杂。【使用简单的模型】
  • 特征过多。【很多特征是冗余特征,使用特征正则化】
  • 数据丰富性不够

特征正则化:
L1正则化:套索回归(部分特征系数变为0)
L2正则化:岭回归(部分特征系数趋近于0)

L1正则化
from sklearn.linear_model import Lasso
# 实例化
alg = Lasso()
# 参数:alpha:空值正则化力度,等于1就等同于普通线性回归,alpha越大变化的值越多
# 拟合
alg.fit(X_train, y_train)

# 查看回归系数
print('回归系数:', alg.coef_)
# 查看截距
print('截距:', alg.intercept_)

# 查看R2
score = alg.predict(X_test, y_test)
print('R2:', score)
L2正则化
from sklearn.linear_model import Ridge
# 实例化
alg = Ridge()
# 参数:alpha:空值正则化力度,等于1就等同于普通线性回归,alpha越大变化的值越多
# 拟合
alg.fit(X_train, y_train)

# 查看回归系数
print('回归系数:', alg.coef_)
# 查看截距
print('截距:', alg.intercept_)

# 查看R2
score = alg.predict(X_test, y_test)
print('R2:', score)

总结

正则化可以通过网格搜索来判断最好的alpha,欠拟合使用多项式特征处理,过拟合使用套索回归和岭回归。但是大多数情况下使用岭回归,因为套索回归会把很多特征变成0

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值