我正在尝试使用sklearn.metrics.roc_auc_score
使用以下方法计算ROC曲线下的面积:
roc_auc = sklearn.metrics.roc_auc_score(actual, predicted)
其中actual
是带有地面实况分类标签的二元向量,predicted
是带分类标签的二元向量,我的分类器已经预测过。
但是,我得到的roc_auc
的值与准确度值(标签正确预测的样本比例)非常相似。这不是一次性的事情。我尝试使用各种参数值的分类器,每次得到相同的结果。
我在这里做错了什么?
答案 0 :(得分:13)
这是因为您传递了分类器的决定而不是它计算的分数。有question on this on SO recently和scikit-learn
的相关拉取请求。
ROC曲线(及其下面的区域)的点是您在分类阈值变化时研究精确召回权衡。默认情况下,在二进制分类任务中,如果分类器的分数为> 0.5
,则会预测class1
,否则会预测class0
。当您更改该阈值时,会得到类似this的曲线。曲线越高(其下面的区域越多),分类器越好。但是,要获得此曲线,您需要访问分类器的分数,而不是其决策。否则无论决策阈值如何,决策都保持不变,AUC退化为准确性。
您使用的是哪种分类器?