Python 如何将GridSearchCV中的验证集与训练集分开进行规范化?

Python 如何将GridSearchCV中的验证集与训练集分开进行规范化?,python,machine-learning,scikit-learn,cross-validation,Python,Machine Learning,Scikit Learn,Cross Validation,如何在GridSearchCV中分别缩放每个折叠 在训练ML模型时,我们应该规范化(缩放)与训练数据相关的特征。然后对测试数据使用拟合的定标器。但如果使用网格搜索CV(5倍),我们通常会向其提供已缩放的训练数据。然后被分成几层。但是,我们如何分别缩放4-1倍 scl=MinMaxScaler() scl.fit_变换(X_序列) 症状自评量表转换(X_检验) #所有训练数据都进行了缩放,并且 #不单独进行培训和验证 cv=GridSearchCV(模型,网格,评分=f1',cv=5) 等速配合(

如何在GridSearchCV中分别缩放每个折叠

在训练ML模型时,我们应该规范化(缩放)与训练数据相关的特征。然后对测试数据使用拟合的定标器。但如果使用网格搜索CV(5倍),我们通常会向其提供已缩放的训练数据。然后被分成几层。但是,我们如何分别缩放4-1倍

scl=MinMaxScaler()
scl.fit_变换(X_序列)
症状自评量表转换(X_检验)
#所有训练数据都进行了缩放,并且
#不单独进行培训和验证
cv=GridSearchCV(模型,网格,评分=f1',cv=5)
等速配合(X_系列、Y_系列)
如果您对如何实现这样的目标有什么建议,请告诉我。

这就是我们的目的

将当前模型转换为流水线模型,如下所示:

new_model = Pipeline([('scaler', MinMaxScaler()), ('model', cur_model)])

不要事先调整训练集。每次调用
fit
时,管道将自动调整和转换您的培训数据(当然仅使用培训数据),并使用fitted
MinMaxScaler
在测试集上调用
transform

为什么不先将培训分为培训和验证集呢。然后缩放每套individually@ZiyadMoraished问题显然是交叉验证,而不是培训/验证。这就是我要找的。您提到不要扩展我的培训集,因为管道会这样做,这是有意义的。但是我认为我仍然需要将scaler与我的训练集相匹配,以便以后可以转换我的测试集,对吗?如果GridSearchCV中有
refit=True
,这是默认设置,则不会。这意味着GridSearchCV将使用具有最佳超参数的整个训练集来训练最终模型,因此管道中的缩放器将自动安装。事实上,在
cv=GridSearchCV(新模型,GRID,scoring='f1',cv=5).fit(X\u-train,Y\u-train)
之后,您只需调用
cv.predict(X\u-test)
(即直接在fitted GridSearchCV上),而不必担心缩放或其他任何事情`这是一些突破性的消息:)。因此,如果我理解正确,让我重申一下。而GridSearchCV(管道,网格,…)将与我的管道一起运行。我的管道将进行预处理。然后我可以使用cv.predict(X_测试)来处理未经预处理的数据,sklearn会处理吗?听起来棒极了。即使我用joblib转储经过训练的管道,它也能起作用吗?然后再加载它?管道中的预处理是否仍然存在转储/加载?是的,转储和加载任何安装的模型或预处理器都是完美的,而不仅仅是这个特定的
GridSearchCV(管道、网格等)
estimator