当前位置: 首页 > 面试题库 >

GridSearchCV是否执行交叉验证?

景麒
2023-03-14
问题内容

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

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

第二个问题,我知道GridSearchCV在其实现中使用K折,如果我X_train, y_train对GridSearchCV中比较的所有三种算法都使用了交叉验证,是否意味着我执行了交叉验证?

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


问题答案:

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

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

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

现在,您需要在开始时保留的测试数据上测试此模型。这将为您提供近乎真实的模型性能。

如果将整个数据用于GridSearchCV,则测试数据会泄漏到参数调整中,因此最终模型可能无法在较新的看不见的数据上表现不佳。



 类似资料:
  • 问题内容: 是否可以在没有交叉验证的情况下使用GridSearchCV?我正在尝试通过网格搜索优化KMeans聚类中的聚类数量,因此我不需要或想要交叉验证。 该文档也使我感到困惑,因为在fit()方法下,它有一个用于非监督学习的选项(例如,将None用于非监督学习)。但是,如果您想进行无监督学习,则需要在没有交叉验证的情况下进行学习,而且似乎没有摆脱交叉验证的选择。 问题答案: 经过大量搜索,我能

  • 交叉验证 那么什么时候才需要交叉验证呢?交叉验证用在数据不是很充足的时候。比如在我日常项目里面,对于普通适中问题,如果数据样本量小于一万条,我们就会采用交叉验证来训练优化选择模型。如果样本大于一万条的话,我们一般随机的把数据分成三份,一份为训练集(Training Set),一份为验证集(Validation Set),最后一份为测试集(Test Set)。用训练集来训练模型,用验证集来评估模型预

  • 问题内容: 我正在尝试进行交叉验证,并且遇到一个错误:“找到的输入变量样本数量不一致:[18,1]” 我在熊猫数据框(df)中使用不同的列作为要素,最后一列作为标签。这源自UC Irvine的机器学习存储库。导入我过去使用过的交叉验证程序包时,我收到了一个错误消息,说明它可能已贬值。我将运行决策树,SVM和K-NN。 我的代码是这样的: 任何帮助将是巨大的! 问题答案: 不推荐使用该模块。新模块已

  • 我正在尝试用Python实现k-fold交叉验证算法。我知道SKLearn提供了一个实现,但是...这是我现在的代码。 learner参数是来自SKlearn库的分类器,k是折叠数,examples是CountVectorizer(再次是SKlearn)产生的稀疏矩阵,它是单词包的表示。例如: 我假设在某个地方有一些逻辑错误,因为训练集上的分数是95%(正如预期的那样),而测试测试上的分数实际上是

  • 我正在训练一个数据集,然后在其他数据集上测试它。