Gridsearch CV是否在创建折叠之前对数据进行混洗



我使用sklearn GridsearchCV来调整超参数,但想知道在创建折叠之前,我给它的数据集是否会被打乱。我希望它不要被打乱,但我找不到它是否在文档中。像train_testrongplit这样的东西有一个布尔值可以混洗或不混洗。

默认情况下,GridSearchCV将使用干净的StratifiedKFold或KFold交叉验证器。这些交叉验证器的默认值是shuffle=False。GridSearchCV的cv参数文档也提供了一些附加信息。

来自文档

3.1.3.关于混洗的注意事项

如果数据排序不是任意的(例如,具有相同类标签的样本是连续的(,那么首先对其进行混洗可能对于获得有意义的交叉验证结果至关重要。然而,如果样本不是独立且相同地分布,则情况可能正好相反。例如,如果样本对应于新闻文章,并按其发布时间排序,那么对数据进行混洗可能会导致模型过度拟合和验证分数膨胀:它将在与训练样本人工相似(时间接近(的样本上进行测试。

一些交叉验证迭代器(如KFold(有一个内置选项,可以在拆分数据索引之前对其进行混洗。注意:

这比直接搅乱数据消耗更少的内存。

默认情况下,不会发生混洗,包括通过指定cv=some_integer来交叉_val_score、网格搜索等执行的(分层(K折叠交叉验证。请记住,train_testrongplit仍然返回随机分割。

random_state参数默认为None,这意味着每次迭代KFold(…,shuffle=True(时,shuffling都会不同。然而,GridSearchCV将对通过对其拟合方法的单个调用验证的每组参数使用相同的混洗。

要获得每次拆分的相同结果,请将random_state设置为一个整数。

最新更新