scikit-learn roc_auc_score()返回精度值

时间:2014-03-11 07:21:41

标签: python scikit-learn scikits

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

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

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

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

我在这里做错了什么?

1 个答案:

答案 0 :(得分:13)

这是因为您传递了分类器的决定而不是它计算的分数。有question on this on SO recentlyscikit-learn的相关拉取请求。

ROC曲线(及其下面的区域)的点是您在分类阈值变化时研究精确召回权衡。默认情况下,在二进制分类任务中,如果分类器的分数为> 0.5,则会预测class1,否则会预测class0。当您更改该阈值时,会得到类似this的曲线。曲线越高(其下面的区域越多),分类器越好。但是,要获得此曲线,您需要访问分类器的分数,而不是其决策。否则无论决策阈值如何,决策都保持不变,AUC退化为准确性。

您使用的是哪种分类器?