我想在每个折叠训练集上应用'StandardScaler'时使用scikit-learn LassoCV / RidgeCV。我不想在交叉验证之前应用缩放器以避免泄漏,但我无法弄清楚我应该如何使用LassoCV / RidgeCV。
有办法做到这一点吗?或者我应该使用Lasso / Ridge创建管道并“手动”搜索超参数(例如使用GridSearchCV)?
非常感谢。
答案 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)