如何在GridSearchCV中分别缩放每个折叠?
在训练ML模型时,我们应该针对训练数据规范化(缩放)特征。然后在测试数据上使用合适的缩放器。但是,如果使用网格搜索CV(5倍),我们通常会为它提供已经缩放的训练数据。然后将其分成折叠。但是,我们如何分别缩放4-1倍呢?
scl = MinMaxScaler()
scl.fit_transform(X_train)
scl.transform(X_test)
# The training data was scaled all together and
# not train and validation separately
cv = GridSearchCV(MODEL, GRID, scoring='f1', cv=5)
cv.fit(X_train, Y_train)
如果您有建议如何实现这样的目标,请告诉我。
答案 0 :(得分:3)
这就是Pipelines的作用。
将当前模型转换为流水线模型,如下所示:
new_model = Pipeline([('scaler', MinMaxScaler()), ('model', cur_model)])
不要预先缩放训练集。每次调用fit
时,Pipeline都会自动拟合并转换您的训练数据(仅使用课程数据),并使用拟合的transform
调用测试集上的MinMaxScaler
。