GridSearchCV的refit和scorer的组合不清楚。

6
我在嵌套的交叉验证内部循环中使用GridSearchCV来寻找最佳参数。通过使用GridSearchCV(scorer='balanced_accuracy')找到“内部赢家”,因此,据我理解,内部折叠中平衡准确度最高的模型是“best_estimator”。 我不明白GridSearchCVrefit的不同参数与scorer参数结合在一起时的作用。如果refit为True,则用哪个评分函数来估计重新拟合到数据集的“内部赢家”的性能?是传递给scorer的相同评分函数(因此在我的情况下是'balanced_accuracy')吗?为什么您也可以将字符串传递给refit?这是否意味着可以使用不同的函数来 1.)找到“内部赢家”和2.)估计整个数据集上的“内部赢家”的性能?
1个回答

10
refit=True时,sklearn使用整个训练集来重新拟合模型。因此,没有测试数据可以使用任何scorer函数来估计性能。
如果在GridSearchCV中使用多个scorer,可能会使用f1_scoreprecisionbalanced_accuracy等多个评分器,sklearn需要知道哪一个评分器用于找到“内部获胜者”。例如,对于KNNf1_score可能在K=5时有最佳结果,但accuracy可能在K=10时最高。sklearn无法确定超参数K的最佳值。
为解决这个问题,您可以将一个字符串scorer传递给refit,以指定这些scorer中的哪一个应该最终决定最佳超参数。然后,将使用最佳值来使用完整数据集重新训练或重新拟合模型。因此,当您只有一个scorer时,就像您的情况一样,您不必担心这个问题。简单地使用refit=True即可。

你有没有关于如何实际让它在操作中工作的提示?我在这里提出了一个问题:https://stackoverflow.com/questions/63533647/gridsearchcv-with-scoring-function-and-refit-parameter - Soyol
refit=True,sklearn使用整个训练集重新拟合模型...但它是否还会提供用于找到最佳超参数的交叉验证分数? - skan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接