我应该如何获得负类的 AUC



我正在使用sklearn来计算我的二元分类模型的AUC:

roc_auc_score(Y_test_binary, plc.predict_proba(X_test, y_true))

它返回 0.810477872581。根据我的理解,它代表了模型识别正类的能力。

但是,我也想知道另一面:我也想计算负类的 AUC。我应该怎么做?我应该使用"平均"参数吗?

====

============================================================

根据文档,"average=None"似乎可以"返回每个类的分数"。但它仍然只返回一个值:

>>> import numpy as np
>>> from sklearn.metrics import roc_auc_score
>>> y_true = np.array([0, 0, 1, 1])
>>> y_scores = np.array([0.1, 0.4, 0.35, 0.8])
>>> roc_auc_score(y_true, y_scores, average=None)
0.75

我希望 1 类有一个数字,0 类有一个数字。

我不确定在二元分类问题中为负类谈论AUC是否有意义。我会说这只是(1 - AUC 分数(用正类计算的。

为了说服自己,让我们重用你的例子:

>>> import numpy as np
>>> from sklearn.metrics import roc_auc_score
>>> y_true = np.array([0, 0, 1, 1])
>>> y_scores = np.array([0.1, 0.4, 0.35, 0.8])
>>> roc_auc_score(y_true, y_scores)
0.75

你可以选择y_true的标签并得到 0.25:

>>> (y_true == 0).astype(np.int32)
array([1, 1, 0, 0], dtype=int32)
>>> roc_auc_score(y_true == 0, y_scores)
0.25

average参数仅用于多类问题。

相关内容

  • 没有找到相关文章

最新更新