GridSearchCV使用StratifiedKFold或KFold。所以我的问题是,在使用GridSearch之前,是否应该将数据分成训练集和测试集,然后仅对测试数据进行拟合?我不确定是否有必要这样做,因为cv方法已经分割了数据,但我看到一些例子事先切分了数据。
谢谢。
GridSearchCV使用StratifiedKFold或KFold。所以我的问题是,在使用GridSearch之前,是否应该将数据分成训练集和测试集,然后仅对测试数据进行拟合?我不确定是否有必要这样做,因为cv方法已经分割了数据,但我看到一些例子事先切分了数据。
谢谢。
GridSearchCV会接受您提供的数据,将其分为训练集和CV集,并使用CV集搜索最佳超参数来训练算法。您可以指定不同的拆分策略(例如拆分比例)。
但是,在进行超参数调整时,数据集的信息仍然会“泄漏”到算法中。
因此,我建议采取以下方法:
1)将原始数据集保留一部分作为测试集(例如10%)
2)在剩余的90%上使用网格搜索。这里的拆分将由算法自行完成。
3)在#1中使用测试集测试得到最佳超参数后,可对新数据的性能进行最终估计。
best_params
,然后使用它们对整个数据集(包括测试部分)调用fit()
,然后再调用predict()
; 基本上,在gs的一次配合下,调用fit()
两次,之后再在gs的外部进行一次。你认为这样做有意义吗? - Jack Fleeting