GridSearchCV是否执行交叉验证?
我目前正在研究一个问题,该问题将在同一数据集上比较三种不同的机器学习算法的性能。我将数据集分为70/30训练/测试集,然后使用GridSearchCV和进行网格搜索以找到每种算法的最佳参数X_train,
y_train。
第一个问题,我是应该对训练集执行网格搜索,还是应该对整个数据集进行网格搜索?
第二个问题,我知道GridSearchCV在其实现中使用K折,如果我X_train,
y_train对GridSearchCV中比较的所有三种算法都使用了交叉验证,是否意味着我执行了交叉验证?
任何答案将不胜感激,谢谢。
回答:
scikit中所有以名称结尾的估计器都将CV
执行交叉验证。但是您需要保留一个单独的测试集来衡量性能。
因此,您需要拆分整个数据以进行训练和测试。暂时忘记此测试数据。
然后将此火车数据仅传递给网格搜索。GridSearch会将火车数据进一步拆分为火车并进行测试,以调整传递给它的超参数。最后,使用找到的最佳参数将模型拟合到整个火车数据中。
现在,您需要在开始时保留的测试数据上测试此模型。这将为您提供近乎真实的模型性能。
如果将整个数据用于GridSearchCV,则测试数据会泄漏到参数调整中,因此最终模型可能无法在较新的看不见的数据上表现不佳。
以上是 GridSearchCV是否执行交叉验证? 的全部内容, 来源链接: utcz.com/qa/412650.html