AP: average precision

如果做VOC competition一定会用到一个评价指标(evaluation measure)叫做ap(average precision);事实上在VOC中都提供了计算ap的方式,在VOC12中,代码在\VOCdevkit\VOCcode目录下的VOCevaluation.m和VOCap.m两个文件中。代码如下:

[so,si]=sort(-out);%out is the result from your classifier
tp=gt(si)>0;
fp=gt(si)<0;

fp=cumsum(fp);%判为负样本的数
tp=cumsum(tp);%判为正样本的数
rec=tp/sum(gt>0);%召回率
prec=tp./(fp+tp);%精确度

ap=VOCap(rec,prec);

function ap = VOCap(rec,prec)

mrec=
### 平均精度 (Average Precision) 的概念 平均精度作为评估分类和检测模型性能的重要指标,能够有效整合精确率(Precision) 和召回率(Recall),从而提供对模型性能的全面衡量[^2]。 ### Average Precision 计算公式 对于二元分类或多标签分类问题中的每一个类别,AP可以通过以下方式计算: 1. **离散化PR曲线法** 首先构建一系列不同的决策阈值,在每个阈值下分别计算对应的精确率和召回率。随后绘制出精确率-召回率曲线(Precision-Recall Curve),并采用梯形法则或其他数值积分技术来估算曲线下方区域面积即为该类别的AP得分。 2. **插值法** 可以定义AP为所有唯一召回位置处的最大精确度值的平均数: \[ AP=\frac{\sum_{r} P(r)}{R} \] 这里 \(P(r)\) 表示给定召回水平\( r \)时所达到的最佳精确度;而分母 R 则代表测试集中正样本总数目。 3. **VOC挑战赛版本** Pascal VOC数据集引入了一种特定形式的插值方案用于计算AP: \[ A P=\int_0^1 p_{\text {interp }}(r) d r \] 其中, \[ p_{\mathrm{interp}}(\mathrm{r})=\max _{\tilde{r}: \tilde{r} \geqslant r} p(\tilde{r}) \] 即在任意召回率上取其右侧最大精确率为当前点的估计值,再求整个区间内的加权平均得到最终结果。 ```python from sklearn.metrics import average_precision_score import numpy as np # 假设 y_true 是真实标签列表, scores 是预测概率或置信度分数列表 y_true = np.array([0, 1, 1, 0]) scores = np.array([0.1, 0.4, 0.35, 0.8]) ap = average_precision_score(y_true, scores) print(f'Average Precision Score: {ap:.3f}') ``` ### 应用场景 - 对于不平衡的数据分布情况特别有用,因为在这种情况下总体准确性可能具有误导性; - 当关注的是检索系统的排名质量而非绝对数量时更为合适; - 在目标检测领域被广泛应用,尤其是在图像识别任务中用来评价算法的好坏程度。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值