python - sklearn中ROC曲线的AUC

标签 python scikit-learn

我试图了解 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/

相关文章:

python - 使用 Scikit-learn (sklearn) 估算整个 DataFrame(所有列)而不迭代列

python - 捕捉 Flask 的所有路线

python - 需要在预测值任务中的领域 ML 或 DL 中推荐方法

scikit-learn - 亲和传播 (sklearn) - 奇怪的行为

pandas - Scikit-learn - 输入特定列中的值

Python Scikit-learn 感知器输出概率

python - 如何将这行 Python 转换为 C++?

python - 什么时候应该使用 setUpClass 什么时候只使用类成员?

python - 需要帮助解析 JSON 文件

python - DataFrame:N 个最大索引值(从 level=1)到 n 列