python - GridSearchCV 是否执行交叉验证?

标签 python machine-learning scikit-learn cross-validation grid-search

我目前正在研究一个问题,该问题比较三种不同的机器学习算法在同一数据集上的性能。我将数据集分成 70/30 的训练/测试集,然后使用 GridSearchCV 和 X_train, y_train 对每个算法的最佳参数进行网格搜索。

第一个问题,我应该对训练集执行网格搜索还是应该对整个数据集执行网格搜索?

第二个问题,我知道 GridSearchCV 在它的实现中使用了 K-fold,这是否意味着如果我对我在GridSearchCV?

任何答案将不胜感激,谢谢。

最佳答案

scikit 中名称以 CV 结尾的所有估计器都执行交叉验证。 但是您需要保留一个单独的测试集来衡量性能。

因此您需要拆分整个数据以进行训练和测试。暂时忘掉这个测试数据。

然后仅将此火车数据传递给网格搜索。 GridSearch 会将此训练数据进一步拆分为训练和测试,以调整传递给它的超参数。最后用找到的最佳参数在整个火车数据上拟合模型。

现在你需要在你一开始保留的测试数据上测试这个模型。这将为您提供接近真实世界的模型性能。

如果您将整个数据用于 GridSearchCV,那么测试数据将泄漏到参数调整中,然后最终模型可能无法在较新的看不见的数据上表现得那么好。

您可以查看我的其他答案,其中更详细地描述了 GridSearch:

关于python - GridSearchCV 是否执行交叉验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49160206/

相关文章:

python - 使用 PyODBC、Python 连接到 SQLite3 服务器

python - 实时对象检测没有名为 'tensorflow.compat.v1' 的模块

python - 与语言 X 闭包相比,Python 中的闭包有哪些限制?

python - 我在梯度下降中遇到问题,它给我的 thetas 没有

python - 如何计算岭回归模型的 RMSE

image-processing - 使用 SciKit-Image 和 SciKit-Learn 进行图像预处理和聚类 - 需要一些建议

python - PyCharm 自动打开

machine-learning - 特征工程: What we call the process that generate values of features from dataset?

python - 如何使用 LABEL_COLUMN 作为连续基列修改 tensorflow 示例 "census"?

python - 使用explained_variance_ratio_条件将PCA投影回原始尺度