我使用GridSearchCV
在嵌套交叉验证的内部循环中找到最佳参数。 “内部获胜者”是使用GridSearchCV(scorer='balanced_accuracy'
找到的,因此据我所知,文档中内折平均平衡度最高的模型是“ best_estimator”。我不了解refit
中GridSearchCV
的不同参数与scorer
参数结合使用的情况。如果refit
为True,当重新拟合到数据集中时,将使用哪个评分函数来评估“内在赢家”的表现?传递给scorer
的计分函数(在我的情况下为'balanced_accuracy')?为什么还要将字符串也传递给refit
?这是否意味着您可以对1.)找到“内部获胜者”和2.)估算该“内部获胜者”在整个数据集上的效果使用不同的功能?
答案 0 :(得分:1)
在refit=True
时,sklearn使用 entire 训练集来重新拟合模型。因此,没有任何测试数据可用来使用任何scorer
函数来评估性能。
如果您在GridSearchCV中使用多个scorer
,可能是f1_score
或precision
以及balanced_accuracy
,则sklearn需要知道要使用哪个scorer
中的哪一个用于找到您所说的“内部优胜者”。例如,对于KNN
,f1_score
可能对K=5
的效果最好,但是accuracy
对于K=10
可能是最高的。 sklearn无法知道哪个超参数K
最好。
要解决此问题,您可以将一个字符串scorer
传递给refit
,以指定其中哪个scorer
最终应确定最佳超参数。然后,该最佳值将用于使用完整数据集重新训练或重新拟合模型。因此,根据您的情况,只有一个scorer
时,您不必为此担心。只需refit=True
就足够了。