使用Scaler与LassoCV,RidgeCV

时间:2016-09-13 09:34:32

标签: python machine-learning scikit-learn

我想在每个折叠训练集上应用'StandardScaler'时使用scikit-learn LassoCV / RidgeCV。我不想在交叉验证之前应用缩放器以避免泄漏,但我无法弄清楚我应该如何使用LassoCV / RidgeCV。

有办法做到这一点吗?或者我应该使用Lasso / Ridge创建管道并“手动”搜索超参数(例如使用GridSearchCV)?

非常感谢。

2 个答案:

答案 0 :(得分:0)

我通过scikit-learn邮件列表得到了答案,所以这里是:

'无法使用带有管道的“高效”EstimatorCV对象。 这是一个API错误,有一个未解决的问题,甚至可能是PR。“

非常感谢Andreas Mueller的回答。

答案 1 :(得分:0)

  • 如果要在交叉验证中对每次迭代应用缩放,可以使用make_pipeline函数(此函数将在每个训练折叠上调用" fit"并调用"转换"在每个测试折叠上)

  • 下面的make_my_pipe可以视为附加了StandardScaler的esitmator。

代码:

from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
from sklearn.cross_validation import cross_val_score
from sklearn.linear_model import Ridge

X = "some data"
y = "the labels of the data"

make_my_pipe = make_pipeline(StandardScaler(), Ridge())
scores = cross_val_score(pipe, X, y)

print(scores)