机器学习线性回归Scikit-Learn API

1.损失函数一节涉及到的API

∙ \bullet Scikit-Learn中实现了采用Huber损失的回归模型:HuberRegressor

  #Huber损失
  from sklearn.linear_model import HuberRegressor
  huber = HuberRegressor()
  huber.fit(X_train, y_train)
  y_train_pred_huber = huber.predict(X_train)

∙ \bullet L2损失

from sklearn.linear_model import LinearRegression
lr = new LinearRegression()
huber.fit(X_train, y_train)
y_train_pred_lr = lr.predict(X_train)

2. LinearRegression

∙ \bullet 最小二乘线性回归。注意:不包含正则项。

class sklearn.linear_model.LinearRegression(fit_intercept=True,normalize=False,copy_X=True,n_jobs=1)

在这里插入图片描述
fit_intercept:如备注所说,如果y已经中心化,则可设置为False,否则设置为true,当已经中心化时,即使训练截距项,其结果也是0。注意是y,而不是输入。
normalize:一般就用默认值False即可。表示对样本作归一化处理,即行,而不是对列。通常做线性回归时都是对列做标准化,对行做归一化的不多,所以一般设置为False就可以。但也有好处,详情见备注。那么什么是鲁邦?归一化、标准化、去量纲是什么关系?
copy_X:设置为False时,在程序中某个时候会被清掉,之后就不再可用。具体是什么时候,不明确,也许是fit之后吧,这个也是猜测。可根据需要及内存大小决定。在这里插入图片描述
多任务回归,即在同一个模型中需要预测多个y值,比如既要预测房价,又要预测拥堵值。
fit方法中的sample_weight是一个与y同长度的向量,起作用的方式是在目标函数的对应的损失函数之前加上相应的权重。为什么会有这样一个参数,详见备注。
score函数需要根据X得出预测值,再与真值一起求评估值。那么这里的sample_weight有什么用呢,这个使用不是都使用sample_weight fit过了吗?
∙ \bullet 监督学习一般流程:新建实例(new) — 》训练(fit)— 》预测(predict)—》评分(score)

3. Ridge岭回归 L2损失 + L1正则。注意:对截距项不施加惩罚。

class sklearn.linear_model.Ridge(alpha=1.0, fit_intercept=True, normalize=False, copy_X=True, max_iter
=None, tol=0.001, solver=’auto’, random_state=None)

alpha是目标函数中的 λ \lambda λ,也就是正则项系数
fit_intercept,normalize,copy_X:意义同LinearRegression
属性及常用方法同LinearRegression。
其余参数与优化计算有关。
在这里插入图片描述在这里插入图片描述
svd和cholesky都是解析求解,由于需要把数据都装载到内存,所以适用于数据较小的时候,或者机器内存较大也可以。梯度下降一节也提到过,解析求解中SVD分解的算法复杂度较高,应是 O ( N 2 D ) O(N^2D) O(N2D),所以也需要应用于数据量较小的时候,可是这里没提到。
sparse_cg共轭梯度,是梯度下降的改进版本。
sag和saga需要标准化,那么这个等同于去量纲吗?

4. SGDRegressor

class sklearn.linear_model.SGDRegressor(loss=’squared_loss’, penalty=’l2’, alpha=0.0001, l1_ratio=0.15,
fit_intercept=True, max_iter=None, tol=None, shuffle=True, verbose=0, epsilon=0.1, random_state=None,
learning_rate=’invscaling’, eta0=0.01, power_t=0.25, warm_start=False, average=False, n_iter=None)

在这里插入图片描述
在这里插入图片描述
average,老师没讲,让有兴趣的自己去查
n_iter,后面的版本就没有这个参数了。
learning_rate:分类缺省使用optimal,回归缺省使用invscaling。

5. Lasso L2损失 + L1正则。注意:正则项都不对截距项进行惩罚。

class sklearn.linear_model.Lasso(alpha=1.0, fit_intercept=True, normalize=False, precompute=False, copy_X
=True, max_iter=1000, tol=0.0001, warm_start=False, positive=False, random_state=None, selection=’cyclic’)

alpha是目标函数中的 λ \lambda λ,也就是正则项系数
fit_intercept,normalize,copy_X:意义同LinearRegression
其余参数与优化计算有关。
属性及常用方法同LinearRegression。
Scikit-Learn中Lasso的目标函数跟理论上的目标函数有点不一样,主要在于损失函数部分乘了个1/2N,这个对优化结果值不影响,那么是不是应该从数理上证明下为什么不影响呢?
在这里插入图片描述
precompute:老师就念了一下说明中第一个句号之前得文字。没有深入得讲

∙ \bullet 弹性网络:L2损失 + (L1正则 + L2正则)

class sklearn.linear_model.ElasticNet(alpha=1.0, l1_ratio=0.5, fit_intercept=True, normalize=False,
precompute=False, max_iter=1000, copy_X=True, tol=0.0001, warm_start=False, positive=False, ra
ndom_state=None, selection=’cyclic’)

6. K折交叉验证数据划分

在这里插入图片描述
在这里插入图片描述

7. K折交叉验证

在这里插入图片描述
注意: cross_val_score,也可以制定一个指标。

8. K折交叉验证之cross_val_score

在这里插入图片描述
groups应该时用来避免同一组的样本被分配到训练集和校验集
在这里插入图片描述
pre_dispatch:总共先派多少任务,或一个时刻总共最多有任务被派出去。
在这里插入图片描述

8. K折交叉验证之cross_validate

在这里插入图片描述
根据下一张PPT,return_train_score默认值warn就是true,要 设置为False,直接设置为False就行了。
在这里插入图片描述

9. GridSearchCV 模型超参数调优

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值