【发布时间】:2021-04-02 17:13:27
【问题描述】:
我知道使用交叉验证技术通过 sklearn.model_selection 库中的 GridSearchCV 类找到 alpha/lambda 最佳值的标准过程。这是我的代码来找到它。
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,据我了解,该库通过通过传递的alphas 列表选择最佳alpha 创建模型,请注意,我对两者都使用了相同的交叉验证方案他们。但是在尝试 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 的实际实现感到困惑。
我的怀疑是..
- 当传递给参数的列表中没有
zero时,为什么我在LassoCV中获得最佳 alpha 为0。 - 那么
LassoCV和Lasso之间有什么区别,如果我必须无论如何只能从GridSearchCV中找到最合适的alpha?
【问题讨论】:
标签: python-3.x scikit-learn lasso-regression gridsearchcv