【问题标题】:How to use precision recall curve in gridsearchcv?如何在 gridsearchcv 中使用精确召回曲线?
【发布时间】:2021-10-04 15:03:10
【问题描述】:

我正在尝试使用 sklearn gridsearchcv 进行超参数调整。我希望使用指标“precision_recall_curve 下的区域”。

gridsearchcv 类似于

>>> parameters = {'kernel':('linear', 'rbf'), 'C':[1, 10]}
>>> svc = svm.SVC()
>>> clf = GridSearchCV(svc, parameters, scoring='accuracy')
>>> clf.fit(iris.data, iris.target)

所以基本上我想要的是将字符串'accuracy'更改为precision_recall_curve下的区域。我应该如何定制它?

【问题讨论】:

    标签: scikit-learn gridsearchcv


    【解决方案1】:

    精确召回曲线下的面积可以通过average_precision_score 估计。来自其documentation

    AP [Average Precision] 将精度-召回曲线总结为在每个阈值处达到的精度的加权平均值,使用从前一个阈值增加的召回率作为权重。

    实际上,这是精确召回曲线下面积的近似值,并在scikit-learn 中实现。有一个很棒的博客here 总结了它背后的概念,还链接到Wikipedia article,其中指出:

    [平均精度]是精度-召回曲线下的面积。

    average_precision_score 可以通过指定average_precision 作为评分方法来使用:

    clf = GridSearchCV(svc, parameters, scoring='average_precision')
    

    但是,请记住这个重要的note 关于average_precision_score

    这种实现没有插值,不同于使用梯形规则计算精确召回曲线下的面积,梯形规则使用线性插值,可能过于乐观。

    【讨论】:

      猜你喜欢
      • 2020-04-18
      • 2021-09-13
      • 2017-09-21
      • 2017-02-11
      • 2016-11-07
      • 2018-02-23
      • 2013-03-09
      • 2020-01-24
      • 2016-01-22
      相关资源
      最近更新 更多