【发布时间】:2018-01-05 18:21:36
【问题描述】:
Gridsearhcv 使用 StratifiedKFold 或 KFold。所以我的问题是,我应该在使用gridsearch之前将我的数据分成训练和测试,然后只对测试数据进行拟合吗?我不确定是否有必要,因为 cv 方法已经拆分了数据,但我已经看到了一些预先拆分数据的示例。
谢谢。
【问题讨论】:
标签: python machine-learning scikit-learn grid-search
Gridsearhcv 使用 StratifiedKFold 或 KFold。所以我的问题是,我应该在使用gridsearch之前将我的数据分成训练和测试,然后只对测试数据进行拟合吗?我不确定是否有必要,因为 cv 方法已经拆分了数据,但我已经看到了一些预先拆分数据的示例。
谢谢。
【问题讨论】:
标签: python machine-learning scikit-learn grid-search
GridSearchCV 将获取您提供的数据,将其拆分为训练集和 CV 集,并训练算法使用 CV 集搜索最佳超参数。您可以根据需要指定不同的拆分策略(例如拆分比例)。
但是当您执行超参数调整时,有关数据集的信息仍然“泄漏”到算法中。
因此我建议采取以下方法:
1) 获取您的原始数据集并保留一些数据作为测试集(例如 10%)
2) 对剩余的 90% 使用网格搜索。拆分将由这里的算法为您完成。
3) 获得最佳超参数后,在 #1 的测试集上对其进行测试,以获得对新数据的预期性能的最终估计。
【讨论】:
best_params 并使用它们在整个数据集(包括测试部分)上调用 fit() ,在致电predict()之前;基本上,调用fit() 两次- 一次作为gs 的一部分,再次在gs 之外。你觉得这有意义吗?