# @file name  : test2.py
# @brief      : 如何绘制PR曲线
# @author     : liupc
# @date       : 2021/8/2import numpy as np
from tqdm import tqdm
import matplotlib.pyplot as plt#计算汉明距离。有几位不同,距离就为几。
def CalcHammingDist(B1, B2):q = B2.shape[1]distH = 0.5 * (q - np.dot(B1, B2.transpose()))return distHdraw_range = [1,2,3,4,5,6,7]def pr_curve(rF, qF, rL, qL, draw_range=draw_range):#rf:galleryBinary#qF: queryBinary#rL: galleryLabel。7行3列。#qL: queryLabel。3行3列。n_query = qF.shape[0]   #多少个查询,3Gnd = (np.dot(qL, rL.transpose()) > 0).astype(np.float32)'''print(Gnd)  #是一个3行7列的数组。第一行代表gallery的7个元素是否与query[0]同类;第二行代表gallery的7个元素是否与query[1]同类。。。[[0. 1. 1. 0. 0. 0. 1.]    #gallery[0]与query[0]不同类;gallery[1]与query[0]同类;gallery[2]与query[0]同类;gallery[3]与query[0]不同类。。。[1. 1. 1. 0. 1. 0. 1.][0. 0. 1. 1. 0. 1. 0.]]'''Rank = np.argsort(CalcHammingDist(qF, rF))                #是一个3行7列的数组。'''print(Rank)             #是一个3行7列的数组。[[3 0 2 5 1 4 6]        #gallery的七个元组中,与query[0]最近的元素是gallery[3],其次是gallery[0],再次是gallery[2]。。。[6 1 4 0 2 5 3][0 4 2 5 6 1 3]]'''P, R = [], []for k in tqdm(draw_range):   #比如k=5p = np.zeros(n_query)    #[0, 0, 0]  分别是query[0]的acc&k, query[1]的acc&k, query[2]的acc&kr = np.zeros(n_query)    #[0, 0, 0]  分别是query[0]的recall&k, query[1]的recall&k, query[2]的recall&kfor it in range(n_query): #比如it=0gnd = Gnd[it]          #[0. 1. 1. 0. 0. 0. 1.]gnd_all = np.sum(gnd)  #3,为了求召回率if gnd_all == 0:       #如果没有对的,那准确率和召回率肯定都是0,不用继续求了continueasc_id = Rank[it][:k]  #[3 0 2 5 1]gnd = gnd[asc_id]      #[0 0 1 0 1]gnd_r = np.sum(gnd)    #前k个结果中对了2个。p[it] = gnd_r / k      #准确率:2/5r[it] = gnd_r / gnd_all #召回率:2/3P.append(np.mean(p))R.append(np.mean(r))#绘制PR曲线plt.plot(R, P, linestyle="-", marker='D', label="DSH")plt.grid(True)plt.xlim(0, 1)plt.ylim(0, 1)plt.xlabel('recall')plt.ylabel('precision')plt.legend()  # 加图例plt.show()return P, Rif __name__=='__main__':queryBinary = np.array([[1,-1,1,1],[-1,1,-1,-1],[1,-1,-1,-1]])galleryBinary = np.array([[ 1,-1,-1,-1],[-1, 1, 1,-1],[ 1, 1, 1,-1],[-1,-1, 1, 1],[ 1, 1,-1,-1],[ 1, 1, 1,-1],[-1, 1,-1,-1]])queryLabel = np.array([[1,0,0],[1,1,0],[0,0,1]], dtype=np.int64)galleryLabel = np.array([[0,1,0],[1,1,0],[1,0,1],[0,0,1],[0,1,0],[0,0,1],[1,1,0]], dtype=np.int64)P, R = pr_curve(galleryBinary, queryBinary, galleryLabel, queryLabel)print(f'Precision Recall Curve data:\n"DSH":[{P},{R}],')

图像检索评价指标:PR曲线的计算与绘制相关推荐

  1. 机器学习100天(二十):020 分类模型评价指标-PR曲线

    机器学习100天!今天讲的是:分类模型评价指标-PR曲线! <机器学习100天>完整目录:目录 上一节我们已经了解了混淆矩阵的概念,并掌握了精确率.召回率的计算公式,在这里.现在我们来学习 ...

  2. 【python】使用sklearn画PR曲线,计算AP值

    import numpy as np import matplotlib.pyplot as plt from sklearn.metrics import precision_recall_curv ...

  3. yolov3--25--Detectron目标检测可视化-P-R曲线绘制-Recall-TP-FP-FN等评价指标

    Detectron目标检测平台 评估训练结果(生成mAP) CUDA_VISIBLE_DEVICES=4 python tools/test_net.py --cfg experiments/2gpu ...

  4. 2020-08-24绘制ROC   PR曲线 核心方法总结 ,计算AUC核心方法

    #1   绘制ROC AUC   PR曲线 #核心方法 roc_curve(y_test, preds)  #  preds为概率形式 #source code import matplotlib.p ...

  5. 边缘检测的评价指标:PR曲线,OIS,ODS,AP的计算与代码实现

    文章目录 一.Precision(精确率)与Recall(召回率) 二.PR曲线:精确率--召回率曲线 三. OIS.ODS.AP的计算 1. ODS 2. OIS 3. AP 四.代码实现 1. 注 ...

  6. 绘制ROC 曲线 计算 AUC PR曲线(精准率 召回率)示例

    #一 ROC评价 及曲线  AUC的值   准确率 auc 的参数来自假阳率 真阳率,一般与 metrics.roc_curve配合使用,来自sklearn正规示例网站 >>> fp ...

  7. python绘制pr曲线图_利用Python中的numpy包实现PR曲线和ROC曲线的计算!

    闲来无事,边理解PR曲线和ROC曲线,边写了一下计算两个指标的代码.在python环境下,sklearn里有现成的函数计算ROC曲线坐标点,这里为了深入理解这两个指标,写代码的时候只用到numpy包. ...

  8. 分类模型性能评价指标:混淆矩阵、F Score、ROC曲线与AUC面积、PR曲线

    以二分类模型为例:二分类模型最终需要判断样本的结果是1还是0,或者说是positive还是negative. 评价分类模型性能的场景: 采集一个称之为测试集的数据集: 测试集的每一个样本由特征数据及其 ...

  9. Detection:目标检测常用评价指标的学习总结(IoU、TP、FP、TN、FN、Precision、Recall、F1-score、P-R曲线、AP、mAP、 ROC曲线、TPR、FPR和AUC)

    目录 前言 1. IoU 2. TP.FP.TN.FN 2.1 混淆矩阵 2.2 TP.FP.TN.FN的定义 2.3 TP.FP.TN.FN在目标检测中的对应内容 2.3.1 TP,FP在目标检测中 ...

  10. 目标检测评价指标汇总—mAP,PR曲线,F1分数,FPPI,log-average miss rate等

    对于了解目标检测的评价指标是很重要的,否则自己不懂这个代表什么意思,如何调参.网上有太多资料,可是杂乱,甚至有一乱说,记录下自己所学,总结下,也分享出来,也便于自己自己复习. 分为三块,1.解释相关概 ...

最新文章

  1. Python十大装腔语法
  2. 数据挖掘入门指南!!!
  3. 【LeetCode】LeetCode之打家劫舍【暴力递归、动态规划、动态规划之优化空间的具体分析与实现】
  4. BugKuCTF WEB 计算器
  5. 分布式与人工智能课程(part8)--Pandas绘图
  6. (转)VS2010 快捷键
  7. Oracle 分页语句解释,oracle 分页语句
  8. JavaScript算法(实例一)完数 / 水仙花数 / 素数
  9. springboot错误: 找不到或无法加载主类
  10. 简单理解梯度消失与梯度爆炸
  11. Chrome 开发者工具的Timeline和Profiles提高Web应用程序的性能[转]
  12. python机器学习案例系列教程——集成学习(Bagging、Boosting、随机森林RF、AdaBoost、GBDT、xgboost)
  13. 2017.4找工作面试记录-第三周(2)--金蝶
  14. 淘宝技术这十年 -- 目录
  15. 如何利用魔棒工具抠图_PS怎么用魔棒工具扣图
  16. php百度蜘蛛劫持,PHP模拟百度蜘蛛,伪造IP爬行网站,附源代码
  17. Bugku CTF web22(Web)
  18. 脸上不同位置长痘痘的原因
  19. 【微信小程序】上传Word、txt、Excel、PPT等文件
  20. Python之禅——个人翻译

热门文章

  1. Freeswitch部署
  2. 联想计算机BIOS密码忘记了,联想笔记本CMOS(BIOS)密码清除
  3. PanDownload:登录百度账号提示浏览器版本太低,点击下载webkit内核,然后重启软件即可
  4. Excel数据分析高级技巧①——动态图表制作(offset,vlookup,控件…)
  5. 2017 ACM-CCPC 秦皇岛站 总结
  6. 北京航空航天计算机考研科目,2020考研北京航空航天大学计算机考研考试科目...
  7. 收银机多少钱一台推荐科脉系统_收银系统多少钱一套?常用收银系统价格大盘点...
  8. 2022 腾讯云 阿里云返佣政策对比
  9. NPDP是什么考试?产品经理必知
  10. 免费版pycharm创建vue项目