Scikit learn 我应该如何获得负类的AUC?
我正在使用计算我的二元分类模型的AUC:Scikit learn 我应该如何获得负类的AUC?,scikit-learn,Scikit Learn,我正在使用计算我的二元分类模型的AUC: roc_auc_score(Y_test_binary, plc.predict_proba(X_test, y_true)) 它返回0.810477872581。根据我的理解,它代表了模型识别积极类的程度 然而,我也想知道另一面:我也想计算负类的AUC。我该怎么做?我应该使用“平均”参数吗 ======================================================== 根据文档,似乎“平均=无”可以“返回每个类的分数
roc_auc_score(Y_test_binary, plc.predict_proba(X_test, y_true))
它返回0.810477872581。根据我的理解,它代表了模型识别积极类的程度
然而,我也想知道另一面:我也想计算负类的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, 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
参数仅用于多类问题。我实际上也有同样的想法。但是考虑到这个例子:y_true=np.array([0,0,1,1]),y_得分=np.array([0.1,0.1,0.9,0.9])。在这种情况下,calssifier可以很好地区分这两个类。类别1的AUC为1,而类别0的AUC为0。似乎两者都应该是1。