如何使用不同的数据集进行 GridSearchCV 训练和测试?

Posted

技术标签:

【中文标题】如何使用不同的数据集进行 GridSearchCV 训练和测试?【英文标题】:How to do GridSearchCV with train and test being different datasets? 【发布时间】:2017-04-06 03:31:25 【问题描述】:

我想找到 RandomForest 分类器(使用 scikit-learn)的最佳参数,使其可以很好地推广到其他数据集(可能不是 iid)。 我正在考虑使用整个训练数据集进行网格搜索,同时评估其他数据集的评分函数。 在 python/scikit-learn 中有一个简单的方法吗?

【问题讨论】:

您无法在另一个数据集上评估评分函数。 【参考方案1】:

我认为您无法对不同的数据集进行评估。 GridSearchCV 背后的整个想法是,它将您的训练集分成 n 折,在其中的 n-1 折上进行训练并评估剩余的折,重复该过程直到每个折都成为“奇数”。这使您不必分开特定的验证集,您可以简单地使用训练集和测试集。

【讨论】:

【参考方案2】:

如果可以,您可以简单地将两个数据集合并并执行 GridSearchCV,这样可以确保对另一个数据集的泛化能力。如果您正在谈论对未来未知数据集的泛化,那么这可能行不通,因为没有完美的数据集可以用来训练完美的模型。

【讨论】:

谢谢!你有没有提到对未来未知数据集的泛化的参考?

以上是关于如何使用不同的数据集进行 GridSearchCV 训练和测试?的主要内容,如果未能解决你的问题,请参考以下文章

sklearn.SVC 在使用带有小型平衡数据集的 GridSearchCV 时返回完全不同的预测(模型)

在多个数据集上迭代 GridSearchCV 会为每个数据集提供相同的结果

使用 Imblearn 管道和 GridSearchCV 进行交叉验证

如何在 GridSearchCV 的 keras 模型的超参数优化中使用简单的验证集?

如何在交叉验证和 GridSearchCV 中实现 SMOTE

对网格搜索中的所有组合使用交叉验证