GridSearchCV的改装和评分器的结合尚不清楚

时间:2019-08-21 12:09:36

标签: python scikit-learn grid-search

我使用GridSearchCV在嵌套交叉验证的内部循环中找到最佳参数。 “内部获胜者”是使用GridSearchCV(scorer='balanced_accuracy'找到的,因此据我所知,文档中内折平均平衡度最高的模型是“ best_estimator”。我不了解refitGridSearchCV的不同参数与scorer参数结合使用的情况。如果refit为True,当重​​新拟合到数据集中时,将使用哪个评分函数来评估“内在赢家”的表现?传递给scorer的计分函数(在我的情况下为'balanced_accuracy')?为什么还要将字符串也传递给refit?这是否意味着您可以对1.)找到“内部获胜者”和2.)估算该“内部获胜者”在整个数据集上的效果使用不同的功能?

1 个答案:

答案 0 :(得分:1)

refit=True时,sklearn使用 entire 训练集来重新拟合模型。因此,没有任何测试数据可用来使用任何scorer函数来评估性能。

如果您在GridSearchCV中使用多个scorer,可能是f1_scoreprecision以及balanced_accuracy,则sklearn需要知道要使用哪个scorer中的哪一个用于找到您所说的“内部优胜者”。例如,对于KNNf1_score可能对K=5的效果最好,但是accuracy对于K=10可能是最高的。 sklearn无法知道哪个超参数K最好。

要解决此问题,您可以将一个字符串scorer传递给refit,以指定其中哪个scorer最终应确定最佳超参数。然后,该最佳值将用于使用完整数据集重新训练或重新拟合模型。因此,根据您的情况,只有一个scorer时,您不必为此担心。只需refit=True就足够了。