需要 scikit learn 岭回归解决方案的详细信息

问题描述 投票:0回答:1

我正在使用 scikit learn 进行岭回归,并对惩罚参数做了一些测试。

我的问题似乎并不取决于我的代码,但对于 scikit ridge 方法可能更普遍 - 因为我只是使用以下方法对某些数据实现了基本的

ridge
回归:

# [m,y are previously defined from the data I am using.]
    alphas=[1e-7,1e-6,1e-5,1e-4,1e-3, 1e-2, 1e-1,0.5, 1]
    for alpha in alphas:
        model=sklearn.linear_model.Ridge(alpha, positive=true)
        model.fit(m,y);
        r_sq = model.score(m,y);

我存储每次运行的结果,并且我对不同惩罚值的结果

R2
感兴趣。

问题:无论惩罚参数如何,我都会获得完全相同的

R2
。我获得不同拟合和不同回归权重的唯一
alpha
值是
alpha=100
alpha=10^-12

我期望

alpha
100
将所有系数绘制为 0 - 事实并非如此。

使用

lasso
进行同样的操作,我得到了我所期望的结果:对于惩罚参数的高值,我获得所有回归权重 0。

有谁知道

ridge
R2
里面会发生什么?我在一篇博文中读到,我丢失了惩罚参数除以样本数,但在 scikit 方法中找不到这个。

提前谢谢您!

scikit-learn linear-regression
1个回答
0
投票

在 for 循环中你总是覆盖最后的结果?

您必须以某种方式附加结果:

r_sq = []
# [m,y are previously defined from the data I am using.]
    alphas=[1e-7,1e-6,1e-5,1e-4,1e-3, 1e-2, 1e-1,0.5, 1]
    for alpha in alphas:
        model=sklearn.linear_model.Ridge(alpha, positive=true)
        model.fit(m,y);
        r_sq_result = model.score(m,y)
        r_sq = r_sq.append(r_sq_result)

© www.soinside.com 2019 - 2024. All rights reserved.