我正在尝试了解ROC曲线如何用于AUC。
y_pred = clf.predict(X2)
probs = clf.predict_proba(X2)
# keep probabilities for the positive outcome only
probs = probs[:, 1]
# calculate AUC
auc = roc_auc_score(y_true, probs)
当我运行
probs = probs[:,1]
时,我的AUC为0.66。但是,当我运行probs=probs[:,0]
时,我的AUC为0.34。我正在解决一个二进制类问题。
混淆矩阵如下
array([[ 77, 34],
[ 825, 1027]])
我的困惑是,为什么文档说明我们必须使用更大的类。上等阶级这个词是什么意思。如果我要交换标签,没关系吗?
从docs中提取
对于二进制y_true,y_score应该是该类的分数
具有更大的标签。
最佳答案
score of the class with greater label
表示分数应针对该班级,以1(更大的索引)表示。
如果输入是多标签类型,则分数的维度应为y。请记住,在输入roc_auc_score
之前,必须先将y转换为一个或多个热向量。
这就是当您给出proba
值的第一列(代表类0的概率)时分数较低的原因。
关于python - sklearn中ROC曲线的AUC,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55701697/