sklearn实现套索回归(lasso regression)以及调参

scikit-learn 通过交叉验证来公开设置 Lasso中αα 参数的对象: LassoCV 和 LassoLarsCV。 LassoLarsCV 是基于下面解释的 最小角回归 算法。

对于具有许多线性回归的高维数据集, LassoCV 最常见。 然而,LassoLarsCV 在寻找 αα 参数值上更具有优势,而且如果样本数量与特征数量相比非常小时,通常 LassoLarsCV 比 LassoCV 要快,他们都自动调节得到合适的alpha

主参数设置
alpha : float, 可选,默认 1.0。当 alpha 为 0 时算法等同于普通最小二乘法,可通过 Linear Regression 实现,因此不建议将 alpha 设为 0.

fit_intercept : boolean 
是否进行拦截计算(intercept)。若 false,则不计算(比如数据已经经过集中了)。

normalize : boolean, 可选, 默认 False 是否将数据归一化。
若 True,则先 normalize 再 regression。若 fit_intercept 为 false 则忽略此参数。当 regressors 被 normalize 的时候,需要注意超参(hyperparameters)的学习会更稳定,几乎独立于 sample。对于标准化的数据,就不会有此种情况。如果需要标准化数据,请对数据预处理。然后在学习时设置 normalize=False。
这里归一化有两个好处:(1):提升模型的收敛速度,减少寻找最优解的时间。(2)提升模型的精度


copy_X : boolean, 可选, 默认 True 
若 True,则会复制 X;否则可能会被覆盖。

precompute : True | False | array-like, 默认=False 
是否使用预计算的 Gram 矩阵来加速计算。如果设置为 ‘auto’ 则机器决定。Gram 矩阵也可以 pass。对于 sparse input 这个选项永远为 True。

max_iter : int, 可选 
最大循环次数。

tol : float, 可选 
优化容忍度 The tolerance for the optimization: 若更新后小于 tol,优化代码检查优化的 dual gap 并继续直到小于 tol 为止。

warm_start : bool, 可选 
为 True 时, 重复使用上一次学习作为初始化,否则直接清除上次方案。

positive : bool, 可选 
设为 True 时,强制使系数为正。

selection : str, 默认 ‘cyclic’ 
若设为 ‘random’, 每次循环会随机更新参数,而按照默认设置则会依次更新。设为随机通常会极大地加速交点(convergence)的产生,尤其是 tol 比 1e-4 大的情况下。
可以是"cyclic"或"random"。它指定了当每轮迭代的时候,选择权重向量的
哪个分量来更新。
    (1)"random":更新的时候,随机选择权重向量的一个分量来更新。
    (2)"cyclic":更新的时候,从前向后依次选择权重向量的一个分量来更新。

random_state : int, RandomState instance, 或者 None (默认值) 
pseudo random number generator 用来产生随机 feature 进行更新时需要用的

seed。仅当 selection 为 random 时才可用。

上述原文链接:https://blog.csdn.net/luanpeng825485697/article/details/79829926

主要超参数就是alpha

# 训练 Lasso 模型
from sklearn.linear_model import Lasso
alpha = 0.1
lasso = Lasso(alpha=alpha)
y_pred_lasso = lasso.fit(X_train, y_train).predict(X_test)
r2_score_lasso = r2_score(y_test, y_pred_lasso)
print(lasso)
print("r^2 on test data : %f" % r2_score_lasso)
原文链接:https://blog.csdn.net/qq_16668303/article/details/89931721

 

你可能感兴趣的:(机器学习深度学习代码知识,机器学习,lasso,套索回归)