机器学习:学习绘制PR曲线
说明:
“P”为查准率,也称准确率;“R”为查全率,也称召回率。
PR曲线是由模型的查准率和查全率为坐标轴形成的曲线,查准率P为纵坐标 查全率R为横坐标。
正例 | 反例 | |
正例 | TP(真正例) | FN(假反例) |
反例 | FP(假正例) | TN(真反例) |
上图为测试的混淆矩阵,表示一个数据集上的所有预测结果,
其中查准率P = TP /(TP+FP);查全率R = TP /(TP+FN)
代码实现:
包引入:
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
生成测试数据:
# 产生两组 0到1之间的随机数# 演示数据1
rand_1 = list(np.random.random(20))# 生成标签和预测概率数据
test_1 = []
for i in range(20):label = "P" if i < 10 else "N"test_1.append({"value": rand_1[i], "label": label})# 对概率进行排序
rand_1.sort(reverse=True)# 演示数据2
rand_2 = list(np.random.random(20))# 生成标签和预测概率数据
test_2 = []
for i in range(20):label = "P" if i < 10 else "N"test_2.append({"value": rand_2[i], "label": label})# 对概率进行排序
rand_2.sort(reverse=True)
计算PR值:
# values 模型预测的所有样本为正的概率列表
# data 模型预测的数据与样本自身正确标签def get_pr(values=[], datas=[]):pr = []for value in values:counts = {"TP": 0, "FP": 0, "TN": 0, "FN": 0}for data in datas:predict_label = "P" if data["value"] >= value else "N"if predict_label == "P" and data["label"] == "P":counts["TP"] += 1elif predict_label == "P" and data["label"] == "N":counts["FP"] += 1elif predict_label == "N" and data["label"] == "N":counts["TN"] += 1elif predict_label == "N" and data["label"] == "P":counts["FN"] += 1# 计算查准率p = round(counts["TP"]/(counts["TP"]+counts["FP"]), 2)# 计算查全率r = round(counts["TP"]/(counts["TP"]+counts["FN"]), 2)pr.append({"p": p, "r": r})return pr
组合数据,用于绘制PR图:
pr_1 = get_pr(rand_1, test_1)
pr_2 = get_pr(rand_2, test_2)# 生成展示数据
data_show = []
for pr in pr_1:data_show.append({'p': pr['p'], 'r': pr['r'], 'model': 'model_1'})for pr in pr_2:data_show.append({'p': pr['p'], 'r': pr['r'], 'model': 'model_2'})for pr in range(20):value = (1.0/20)*prdata_show.append({'p': value, 'r': value, 'model': 'BEP'})
data_show = pd.DataFrame(data_show)#绘制图表
sns.relplot(x="r", y="p", ci=None, hue='model', kind="line", data=data_show)
机器学习:学习绘制PR曲线相关推荐
- 机器学习入门案例:鸢尾花数据集分类 绘制PR曲线
案例使用鸢尾花数据集进行分类预测,并绘制评价分类性能的PR曲线图 认识分类任务和数据集 Iris(鸢尾花)数据集 案例演示中使用的是有监督的机器学习算法:SVM 支持向量机 建立模型的流程如下: 训练 ...
- 机器学习:python绘制P-R曲线与ROC曲线
Python绘制P-R曲线与ROC曲线 查准率与查全率 P-R曲线的绘制 ROC曲线的绘制 查准率与查全率 P-R曲线,就是查准率(precision)与查全率(recall)的曲线,以查准率作为 ...
- 机器学习性能评估——PR曲线与ROC曲线
1.PR曲线 P-R曲线是精确率precision与召回率recall 曲线,以recall作为横坐标轴,precision作为纵坐标轴.在介绍精确率和召回率之前,先来看下如下的混淆矩阵: 真实情况\ ...
- yolo模型(四)绘制PR曲线所用到的reval_voc_py.py代码
在绘制PR曲线时要自己生成一个pkl文件,需要reval_voc_py.py代码来生.现贴出基于python2和python3的代码,按照自己的python版本直接复制即可.拿走不谢~ reval_v ...
- python画pr曲线代码_Yolov3测试图及绘制PR曲线,yoloV3,map,和,画
训练指令:./darknet.exe detector train data/obj.data yolo-obj.cfg darknet53.conv.74 | tee train_yolov3.lo ...
- 机器学习()PR曲线绘制
目录 P-R 曲线绘制 Ground Truth P-R 曲线绘制 Precision-查准率-预测出来的正例中正确的比例---找得对-(查准率高-宁缺毋滥 Recall-查全率-衡量正例被预测出来的 ...
- 机器学习:何为PR曲线与ROC曲线
PR曲线实则是以precision(精准率)和recall(召回率)这两个为变量而做出的曲线,其中recall为横坐标,precision为纵坐标. 想要明白何为precision(精准率)和reca ...
- 机器学习:关于P-R曲线和Roc曲线
一:关于P-R曲线: 1:1:何为P-R曲线: P为precision即精准率(查准率),R为recall即召回率,所以P-R曲线是反映了准确率与召回率之间的关系.一般横坐标为recall,纵 ...
- 机器学习学习笔记(二)---PR曲线
学习笔记 PR曲线 一.P和R代表什么 TP FP TN FN 基本概念 P与R 的定义 评估PR曲线 二.绘制PR曲线 代码 参考文献 一.P和R代表什么 在信息检索中,我们经常会关心"检 ...
最新文章
- 领英Linkedin信息搜集工具InSpy
- android 按钮动画效果_【css特效】按钮动画 - 按压效果
- win10无法连接wifi_手机连接WIFI但是无法上网?3个办法帮您解决!
- centos7公司内网环境搭建集群性能测试环境(ip+域名部署)
- android 从文件制定位置读取数据
- vagrant打造自己的开发环境~~我也来一发
- oracle学习笔记之 审计
- linux文件夹做链接,linux为什么不能给目录做硬链接
- 本机与服务器、镜像机之间文件互传
- java 封闭类型_java – 如何获取封闭类?
- 北斗卫星导航定位系统应用及发展前景
- tomcat配置优化,apr的配置详解
- JDK 1.8 中的 Timer 类
- bootstrap表格标题Caption位于表格下方的原因
- 网络设置、ssh服务
- COSMOS认证辅导,真正的有机护肤品首先要是天然植物成分,不受转基因和人工化学添加的影响
- 店铺定位目的,品牌传播,产品、人群、价格定位
- 使用vlc串流http视频链接
- 马斯洛“需求层次理论” 在《植物大战僵尸》中的运用
- 工业智能网关BL110应用之九十六: 实现西门子S7-1500 PLC接入华为云平台