Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用GridSearchCV时是否需要拆分数据?_Python_Machine Learning_Scikit Learn_Grid Search - Fatal编程技术网

Python 使用GridSearchCV时是否需要拆分数据?

Python 使用GridSearchCV时是否需要拆分数据?,python,machine-learning,scikit-learn,grid-search,Python,Machine Learning,Scikit Learn,Grid Search,GridSear使用分层折叠或KFold。所以我的问题是,我应该在使用gridsearch之前将数据分成训练和测试,然后只对测试数据进行拟合吗?我不确定是否有必要,因为cv方法已经分割了数据,但我看到了一些预先分割数据的示例 谢谢。GridSearchCV将获取您提供的数据,将其拆分为训练集和CV集,并使用CV集搜索最佳超参数的训练算法。如果需要,可以指定不同的拆分策略(例如拆分比例) 但是,当您执行超参数调优时,有关数据集的信息仍然会“泄漏”到算法中 因此,我建议采取以下方法: 1) 将原始数

GridSear使用分层折叠或KFold。所以我的问题是,我应该在使用gridsearch之前将数据分成训练和测试,然后只对测试数据进行拟合吗?我不确定是否有必要,因为cv方法已经分割了数据,但我看到了一些预先分割数据的示例


谢谢。

GridSearchCV将获取您提供的数据,将其拆分为训练集和CV集,并使用CV集搜索最佳超参数的训练算法。如果需要,可以指定不同的拆分策略(例如拆分比例)

但是,当您执行超参数调优时,有关数据集的信息仍然会“泄漏”到算法中

因此,我建议采取以下方法:

1) 将原始数据集作为测试集保存一些数据(例如,10%)

2) 对剩余的90%使用网格搜索。分割将由这里的算法完成


3) 获得最佳超参数后,在#1的测试集上对其进行测试,以获得对新数据预期性能的最终估计。

在整个训练数据集上执行GridSearchCV不会更好,因为它已经执行了CV,一旦搜索完成,使用找到的分类器拟合和预测训练测试数据分割?@fjsj这是一个有效点,但在网格搜索过程中,有关数据集的一些信息仍会泄漏到hyperparameters中。要在新数据上获得最终的、无偏见的性能,您需要拿出一个数据集的样本,该样本从未被fit分类器看到过——无论是直接还是间接。如果你正在预测时间序列数据,这一点尤其重要——最好是搜索,比如,1月至11月数据,然后对12月数据进行最终测试,以获得对performance@MaksimKhaitovich-在某些地方,我看到您的答案出现了变化:人们从gs获取
最佳参数
,在调用
predict()
之前,使用这些参数对整个数据集(包括测试部分)调用
fit()
;基本上,调用
fit()
两次,一次作为gs的一部分,另一次在gs之外。这对你有意义吗?@JackFleeting不确定这个问题的性质。我的意思是,如果你把fit称为GS的一部分,那么你可以使用你使用的数据子集来找到最佳超参数(或者如果你正在对很多子集进行Kfold以获得最佳超参数的估计值)。第二次调用fit时,您将覆盖整个训练数据集