手动计算AUC

问题描述 投票:0回答:3

如何获得具有fpr和tpr的AUC值? Fpr 和 tpr 只是从这些公式获得的 2 个浮点数:

my_fpr = fp / (fp + tn)
my_tpr = tp / (tp + fn)
my_roc_auc = auc(my_fpr, my_tpr)

我知道这是不可能的,因为 fpr 和 tpr 只是一些浮点数,它们需要是数组,但我不知道如何做到这一点。我也知道我可以这样计算 AUC:

y_predict_proba = model.predict_proba(X_test)
probabilities = np.array(y_predict_proba)[:, 1]
fpr, tpr, _ = roc_curve(y_test, probabilities)
roc_auc = auc(fpr, tpr)

但由于某些原因我想避免使用 Predict_proba 。所以我的问题是:如何获得具有

fp, tp, fn, tn, fpr, tpr
的 AUC?也就是说,没有
roc_curve
也能得到AUC吗?

python predict roc auc false-positive
3个回答
16
投票

是的,无需调用roc_curve即可获得AUC。

您首先需要创建 ROC(接收者操作特征)曲线。为了能够使用 ROC 曲线,您的分类器应该能够对示例进行排名,以便排名较高的示例更有可能是正面的(例如欺诈性的)。例如,逻辑回归输出概率,这是可用于排名的分数。 ROC 曲线是通过在不同阈值设置下绘制真阳性率 (TPR) 与假阳性率 (FPR) 的关系来创建的。举个例子:

模型性能通过查看 ROC 曲线(或 AUC)下的面积来确定

您可以在这里找到更详细的解释。


2
投票

您可以将空间分为两部分:三角形和梯形。三角形的面积为

TPR*FRP/2
,梯形的面积为
(1-FPR)*(1+TPR)/2 = 1/2 - FPR/2 + TPR/2 - TPR*FPR/2
。总面积为
1/2 - FPR/2 + TPR/2
。这就是你如何获得它,只有2点。


0
投票
from sklearn import metrics

my_fpr = fp / (fp + tn)
my_tpr = tp / (tp + fn)
my_roc_auc = metrics.auc([0, my_fpr, 1], [0, my_tpr, 1])

关键思想是添加两个点(

FPR=0, TPR=0
FPR=1, TPR=1
)用于AUC计算。这两点始终存在于 ROC 曲线中。

© www.soinside.com 2019 - 2024. All rights reserved.