我正在使用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
参数仅用于多类问题。