【评价指标】如何计算模型评估中的AUC和AUPR值

  计算模型的auc、aupr值一般用sklearn的包进行计算,下面是计算auc的详细过程。y_true是数据的真实标签,y_score是模型的预测得分。
  对于计算的auc值,这里详细解释一下什么是auc。AUC的英文是Area Under The Curve,意思就是曲线下的面积,所以这是个抽象的概念。需要指定计算什么曲线下的面积,这样计算出来的数值才有意义。下面的例子计算的是roc曲线的面积(如何理解ROC曲线):

import numpy as np
from sklearn.metrics import roc_auc_score
y_true = np.array([0, 0, 1, 1])
y_scores = np.array([0.1, 0.4, 0.35, 0.8])
roc_auc_score(y_true, y_scores)
输出:0.75
import numpy as np
from sklearn import metrics
y = np.array([0, 0, 1, 1])
pred = np.array([0.1, 0.4, 0.35, 0.8])
fpr, tpr, thresholds = metrics.roc_curve(y, pred)
metrics.auc(fpr, tpr)
输出:0.75

  以上两种计算roc_auc的方式,得出的结果是一样的。第一种计算方法直接出结果,第二种方法可以得出fpr,tpr的值能够进行画图(详细的区别查看参考文献[4]
  PR曲线概念:PR曲线中的P代表的是precision(精准率),R代表的是recall(召回率),其代表的是精准率与召回率的关系,一般情况下,将recall设置为横坐标,precision设置为纵坐标。

import numpy as np
from sklearn.metrics import average_precision_score, auc
y_true = np.array([0, 0, 1, 1,1,1])
y_scores = np.array([0, 0.5, 0.4, 1,1,1])
print (average_precision_score(y_true, y_scores) )

# 严格定义计算方法
precision, recall, thresholds = precision_recall_curve(y_true, y_scores)
print(auc(recall, precision))
plt.xlabel('Recall')
plt.ylabel('Precision')
# plt.grid()  # 生成网格
 
plt.plot(recall,precision)
plt.figure("P-R Curve")
plt.show()

  上面的两种计算方法都是计算曲线的AUPR值,然而程序算出的结果是0.95, 而严格按照定义算出来的结果是0.94375。我们需要注意这个区别,具体的原因参见参考文献[6]。
  如何绘制AUROC和AUPR曲线绘制AUC和AUPR曲线
  AUC与AUPR的区别是什么?

参考文献

[1]如何理解机器学习和统计中的AUC?
[2]机器学习中auc与aupr 指的是什么?
[3]详解scikit-learn计算ROC/AUC曲线
[4]sklearn:auc、roc_curve、roc_auc_score
[5]PR曲线详解
[6]为什么平均精准度(Average Precision,AP)就是PR曲线的线下面积?
[7]sklearn.metrics import average_precision_score研究

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值