Scikit-learn roc_auc_score()返回精度值



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

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

其中,actual是一个具有真值分类标签的二进制向量,predicted是一个具有分类标签的二进制向量,我的分类器已经预测了。

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

我在这里做错了什么?

这是因为您传递的是分类器的决策,而不是它计算的分数。最近在SO上有一个关于这个的问题,并向scikit-learn提出了一个相关的pull请求。

ROC曲线的点(以及它下面的面积)是当分类阈值变化时,您研究精度-召回率权衡。默认情况下,在二元分类任务中,如果分类器的分数是> 0.5,那么预测class1,否则预测class0。当你改变阈值时,你会得到这样一条曲线。曲线越高(它下面的面积越大),分类器就越好。然而,要获得这条曲线,您需要访问分类器的分数,而不是它的决策。否则,无论决策阈值是什么,决策保持不变,并且AUC退化到精度。

您使用的是哪个分类器?

相关内容

  • 没有找到相关文章

最新更新