我试图了解 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]])
我的困惑在于为什么文档指出我们必须使用更大的类。更大的类(Class)这个词是什么意思。如果我要交换标签,没关系吗?
摘自docs
For binary y_true, y_score is supposed to be the score of the class with greater label.
最佳答案
score of the class with Greater label
表示该分数应该是针对该类的,表示为 1(较大索引)。
如果输入是多标签类型,则分数的维度应为 y。请记住,y 在输入到 roc_auc_score
之前必须转换为一个热向量或多热向量。
这就是分数较低的原因,当您给出第一列 proba
值时,该值代表类别 0 的概率。
关于python - sklearn中ROC曲线的AUC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55701697/