8

我正在尝试sklearn.metrics.roc_auc_score使用以下方法计算 ROC 曲线下的面积:

roc_auc = sklearn.metrics.roc_auc_score(actual, predicted)

其中actual是具有地面实况分类标签predicted的二元向量,是具有分类标签的二元向量,我的分类器已预测。

但是,roc_auc我得到的值与准确度值(标签被正确预测的样本的比例)完全相似。这不是一次性的事情。我在参数的各种值上尝试我的分类器,每次我得到相同的结果。

我在这里做错了什么?

4

1 回答 1

15

这是因为您传递的是分类器的决定而不是它计算的分数。最近在 SO 上有一个关于此的问题以及对scikit-learn.

ROC 曲线的点(及其下方的区域)是您研究随着分类阈值的变化而进行的精确召回权衡。默认情况下,在二元分类任务中,如果您的分类器的分数为 > 0.5class1则为预测,否则class0为预测。当你改变这个阈值时,你会得到这样的曲线。曲线越高(曲线下方的面积越大),分类器就越好。但是,要获得此曲线,您需要访问分类器的分数,而不是其决策。否则,无论决策阈值是多少,决策都保持不变,并且 AUC 退化为准确度。

你用的是哪个分类器?

于 2014-03-11T10:36:59.443 回答