【问题标题】:How does sklearn calculate the area under the roc curve for two binary inputs?sklearn 如何计算两个二进制输入的 roc 曲线下面积?
【发布时间】:2014-11-10 23:04:04
【问题描述】:

我注意到sklearn有以下功能:

sklearn.metrics.roc_auc_score()

将ground_truth和预测作为输入。

例如,

ground_truth = [1,1,0,0,0]
prediction = [1,1,0,0,0]

sklearn.metrics.roc_auc_score(ground_truth, prediction) 返回1

我的问题是我无法弄清楚 sklearn 如何使用两个二进制输入计算 ROC 曲线下的面积。 ROC曲线不是通过移动分类阈值,计算每个阈值的误报和命中率得出的吗?使用两个二进制输入,您不应该只有一个(误报、命中率)测量吗?

非常感谢!

【问题讨论】:

    标签: python scikit-learn


    【解决方案1】:

    您将使用二进制预测正确,您只需对曲线仅具有单个阈值/测量。我自己不明白,所以我用一吨打印语句运行了Sklearn教程,然后用纯二进制示例运行了代码。所有的魔法都发生在sklearn.metrics._binary_clf_curve

    “阈值”是不同的预测分数。对于任何二进制分类器,输出纯粹的分类器和零,您将获得两个阈值 - 1和0(它们在内部排序到最高到最低)。在1个阈值处,预测得分> = 1是真实的,下面的任何内容(在这种情况下仅为0)被认为是假的,并且从中计算TP和FP速率。在所有情况下,最后一个阈值将所有内容分类为真实,因此TP和FP速率均为1。

    它出现在您使用@ 987654323的Sklearn分类器的Sklearn分类器的正确ROC曲线,而不是@ 987654323。或者,也许predict_log_proba()?我不确定它是否会有所不同

    【讨论】:

      猜你喜欢
      • 2018-05-24
      • 1970-01-01
      • 2011-06-24
      • 2012-10-10
      • 2020-09-19
      • 1970-01-01
      • 2012-01-29
      • 1970-01-01
      相关资源
      最近更新 更多