gpt4 book ai didi

python-3.x - GridSearchCV 给出的结果与 LassoCV 的最佳 alpha 不同

转载 作者:行者123 更新时间:2023-12-05 03:46:06 24 4
gpt4 key购买 nike

我知道通过 GridSearchCV 使用交叉验证技术找到 alpha/lambda 最优值的标准过程在 sklearn.model_selection 中上课库。这是我找到它的代码。

    alphas=np.arange(0.0001,0.01,0.0005)
cv=RepeatedKFold(n_splits=10,n_repeats=3, random_state=100)

hyper_param = {'alpha':alphas}

model = Lasso()

model_cv = GridSearchCV(estimator = model,
param_grid=hyper_param,
scoring='r2',
cv=cv,
verbose=1,
return_train_score=True
)

model_cv.fit(X_train,y_train)
#checking the bestscore
model_cv.best_params_

这给了我 alpha=0.01

现在,查看 LassoCV ,根据我的理解,这个库通过选择最佳优化来创建模型 alpha通过路过alphas列表,请注意,我对它们都使用了相同的交叉验证方案。但是当尝试 sklearn.linear_model.LassoCV使用 RepeatedKFold 交叉验证方案。

alphas=np.arange(0.0001,0.01,0.0005)
cv=RepeatedKFold(n_splits=10,n_repeats=3,random_state=100)
ls_cv_m=LassoCV(alphas,cv=cv,n_jobs=1,verbose=True,random_state=100)
ls_cv_m.fit(X_train_reduced,y_train)
print('Alpha Value %d'%ls_cv_m.alpha_)
print('The coefficients are {}',ls_cv_m.coef_)

我得到 alpha=0对于相同的数据,此 alpha 值不存在于 alphas 中传递的十进制值列表中对此的争论。这让我对 LassoCV 的实际实现感到困惑。 .我的疑虑是..

  • 为什么我得到最佳 alpha 作为 0LassoCV当传递给参数的列表没有 zero
  • LassoCV 之间有什么区别?和 Lasso然后,如果我无论如何都必须从 GridSearchCV 中找到最合适的 alpha只有?

最佳答案

首先,您应该将 alphas 作为关键字参数而不是位置参数传递,因为 LassoCV 的第一个位置参数是 eps

ls_cv_m=LassoCV(alphas=alphas,cv=cv,n_jobs=1,verbose=True,random_state=100)

然后,模型返回您之前定义的 alpha 之一作为最佳参数,但是您只是将其打印为整数,将 float 转换为整数。将 %d 替换为 %f 以浮点格式打印它:

print('Alpha Value %f'%ls_cv_m.alpha_)

看看here有关 Python 打印格式和样式的更多详细信息。

关于您的第二个问题,Lasso 是线性模型,而 LassoCV 是一个迭代过程,可让您使用交叉验证为 Lasso 模型找到最佳参数。

关于python-3.x - GridSearchCV 给出的结果与 LassoCV 的最佳 alpha 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65435137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com