【问题标题】:Combination of GridSearchCV's refit and scorer unclearGridSearchCV的改装和scorer组合不清楚
【发布时间】:2019-12-26 17:08:14
【问题描述】:

我使用GridSearchCV 在嵌套交叉验证的内部循环中找到最佳参数。使用GridSearchCV(scorer='balanced_accuracy') 找到了“内部赢家”,因此据我了解,内部折叠中平均平衡精度最高的模型是“best_estimator”。我不明白GridSearchCVrefit 的不同论点与scorer 论点结合起来做什么。如果refit 为真,那么在重新拟合到数据集时,将使用什么评分函数来估计那个“内在赢家”的表现?传递给scorer 的相同评分函数(在我的例子中是'balanced_accuracy')?为什么你还可以将字符串传递给refit?这是否意味着您可以使用不同的函数来 1.) 找到“内部获胜者”和 2.) 估计“内部获胜者”在整个数据集上的表现?

【问题讨论】:

    标签: python scikit-learn grid-search


    【解决方案1】:

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

    如果您在 GridSearchCV 中使用多个 scorer,可能是 f1_scoreprecision 以及您的 balanced_accuracy,sklearn 需要知道使用哪一个 scorer 来像您一样找到“内在赢家”说。例如KNNf1_score 可能与K=5 有最好的结果,但accuracy 可能是K=10 的最高结果。 sklearn 无法知道超参数K 的哪个值最好。

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多