gpt4 book ai didi

python - roc_auc_score() 和 auc() 的结果不同

转载 作者:IT老高 更新时间:2023-10-28 21:51:38 33 4
gpt4 key购买 nike

我很难理解 scikit-learn 中 roc_auc_score()auc() 之间的区别(如果有的话)。

我想预测具有不平衡类的二进制输出(Y=1 约为 1.5%)。

分类器

model_logit = LogisticRegression(class_weight='auto')
model_logit.fit(X_train_ridge, Y_train)

Roc 曲线

false_positive_rate, true_positive_rate, thresholds = roc_curve(Y_test, clf.predict_proba(xtest)[:,1])

AUC 的

auc(false_positive_rate, true_positive_rate)
Out[490]: 0.82338034042531527

roc_auc_score(Y_test, clf.predict(xtest))
Out[493]: 0.75944737191205602

有人可以解释这种差异吗?我认为两者都只是计算 ROC 曲线下的面积。可能是因为数据集不平衡,但我不知道为什么。

谢谢!

最佳答案

AUC 并不总是ROC 曲线的曲线下面积。 Area Under the Curve 是some曲线下的(抽象的)面积,所以它是一个比AUROC通用的东西。对于不平衡的类,找到精确召回曲线的 AUC 可能会更好。

查看 roc_auc_score 的 sklearn 源代码:

def roc_auc_score(y_true, y_score, average="macro", sample_weight=None):
# <...> docstring <...>
def _binary_roc_auc_score(y_true, y_score, sample_weight=None):
# <...> bla-bla <...>

fpr, tpr, tresholds = roc_curve(y_true, y_score,
sample_weight=sample_weight)
return auc(fpr, tpr, reorder=True)

return _average_binary_score(
_binary_roc_auc_score, y_true, y_score, average,
sample_weight=sample_weight)

如你所见,这首先得到一个roc曲线,然后调用auc()得到面积。

我猜你的问题是 predict_proba() 调用。对于普通的 predict() 输出总是相同的:

import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_curve, auc, roc_auc_score

est = LogisticRegression(class_weight='auto')
X = np.random.rand(10, 2)
y = np.random.randint(2, size=10)
est.fit(X, y)

false_positive_rate, true_positive_rate, thresholds = roc_curve(y, est.predict(X))
print auc(false_positive_rate, true_positive_rate)
# 0.857142857143
print roc_auc_score(y, est.predict(X))
# 0.857142857143

如果您为此更改上述内容,有时会得到不同的输出:

false_positive_rate, true_positive_rate, thresholds = roc_curve(y, est.predict_proba(X)[:,1])
# may differ
print auc(false_positive_rate, true_positive_rate)
print roc_auc_score(y, est.predict(X))

关于python - roc_auc_score() 和 auc() 的结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31159157/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com