如何获得具有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
?
答案 0 :(得分:1)
是的,无需调用roc_curve即可获得AUC。
您首先需要创建ROC(接收机工作特性)曲线。为了能够使用ROC曲线,您的分类器应该能够对示例进行排名,以使排名较高的示例更有可能是正面的(例如欺诈)。例如,逻辑回归输出概率,这是可用于排名的分数。 ROC曲线是通过在各种阈值设置下将正阳性率(TPR)相对于误阳性率(FPR)绘制而成的。例如:
通过查看ROC曲线(或AUC)下的面积来确定模型性能
您可以找到here更详细的说明。
答案 1 :(得分:0)
您可以将空间分为两部分:三角形和梯形。三角形将具有区域TPR*FRP/2
,即梯形(1-FPR)*(1+TPR)/2 = 1/2 - FPR/2 + TPR/2 - TPR*FPR/2
。总面积为1/2 - FPR/2 + TPR/2
。只需2分就可以获得它。