参考:PR曲线和F1-score 评价指标相关 - 知乎
sklearn官方文档:Precision-Recall — scikit-learn 1.0.2 documentation

多标签设置中的PR曲线

查了好多文档,但依旧看得稀里糊涂。上面两个链接讲的非常清楚了,所以在这里记录一下。具体原理不多说,看上面链接就行,下面直接上代码:

一、数据说明:

n_classes,标签类别总数

Y_test, 真实标签(one-hot形式,转换为nudarry格式)

y_score,预测结果得分(转换为nudarry格式)

二、导入:

import numpy as np
from sklearn.metrics import precision_recall_curve,average_precision_score,PrecisionRecallDisplayimport matplotlib.pyplot as plt
from itertools import cycle

三、代码:

def plot_pr_multi_label(n_classes, Y_test, y_score):# For each classprecision = dict()recall = dict()average_precision = dict()for i in range(n_classes):precision[i], recall[i], _ = precision_recall_curve(Y_test[:, i], y_score[:, i])average_precision[i] = average_precision_score(Y_test[:, i], y_score[:, i])# print(recall)# print(average_precision)# A "micro-average": quantifying score on all classes jointlyprecision["micro"], recall["micro"], _ = precision_recall_curve(Y_test.ravel(), y_score.ravel())average_precision["micro"] = average_precision_score(Y_test, y_score, average="micro")# print(precision)# print(average_precision)# 绘制平均PR曲线display = PrecisionRecallDisplay(recall=recall["micro"], precision=precision["micro"],average_precision=average_precision["micro"], )display.plot()_ = display.ax_.set_title("Micro-averaged over all classes")# 绘制每个类的PR曲线和 iso-f1 曲线# setup plot detailscolors = cycle(["navy", "turquoise", "darkorange", "cornflowerblue", "teal"])_, ax = plt.subplots(figsize=(7, 8))f_scores = np.linspace(0.2, 0.8, num=4)lines, labels = [], []for f_score in f_scores:x = np.linspace(0.01, 1)y = f_score * x / (2 * x - f_score)(l,) = plt.plot(x[y >= 0], y[y >= 0], color="gray", alpha=0.2)plt.annotate("f1={0:0.1f}".format(f_score), xy=(0.9, y[45] + 0.02))display = PrecisionRecallDisplay(recall=recall["micro"], precision=precision["micro"],average_precision=average_precision["micro"], )display.plot(ax=ax, name="Micro-average precision-recall", color="gold")for i, color in zip(range(n_classes), colors):display = PrecisionRecallDisplay(recall=recall[i], precision=precision[i],average_precision=average_precision[i], )display.plot(ax=ax, name=f"Precision-recall for class {i}", color=color)# add the legend for the iso-f1 curveshandles, labels = display.ax_.get_legend_handles_labels()handles.extend([l])labels.extend(["iso-f1 curves"])# print(l)# print(handles)# print(labels)# set the legend and the axesax.set_xlim([0.0, 1.0])ax.set_ylim([0.0, 1.05])ax.legend(handles=handles, labels=labels, loc="best")ax.set_title("Extension of Precision-Recall curve to multi-class")# plt.show()

四、结果:

(1) 平均精度

(2)每个类的PR曲线和 iso-f1 曲线

机器学习中绘制(多标签)PR曲线和F1-score【转载】相关推荐

  1. 机器学习:PR曲线及F1 score

    PR曲线及F1 score Pecision 和 Recall PR曲线 PR曲线的绘制 PR曲线的性能比较 F1 score F1 的一般形式 macro-F1 micro-F1 Pecision ...

  2. R语言使用pROC包在同一图中绘制两条ROC曲线并通过假设检验检验ROC曲线的AUC或者偏AUC的差异(输出p值)

    R语言使用pROC包在同一图中绘制两条ROC曲线并通过假设检验检验ROC曲线的AUC或者偏AUC的差异(输出p值) 目录

  3. 机器学习性能度量(1):P-R曲线与ROC曲线,python sklearn实现

    最近做实验要用到性能度量的东西,之前学习过现在重新学习并且实现一下. 衡量模型泛化能力的评价标准,这就是性能度量.性能度量反应了任务需求,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判 ...

  4. 机器学习笔记(一)P-R曲线与ROC曲线

    P-R曲线与ROC曲线 一.什么是P-R曲线? 二.什么是ROC曲线? 三.P-R曲线与ROC曲线有什么用? 三.绘制P-R曲线代码 一.什么是P-R曲线? 要知道什么是P-R曲线,首先,我们要先了解 ...

  5. python画两条曲线_查找在matplotlib中绘制的两条曲线之间的区域(在区域之间填充)...

    我有两条曲线的x和y值列表,它们都有奇怪的形状,而且我没有任何函数.我需要做两件事:(1)绘制它并对曲线之间的区域进行着色,如下图所示:(2)找到曲线之间该着色区域的总面积. 在matplotlib中 ...

  6. 【机器学习-西瓜书】二、性能度量:召回率;P-R曲线;F1值;ROC;AUC

    关键词:准确率(查准率,precision):召回率(查全率,recall):P-R曲线,平衡点(Break-Even Point, BEP):F1值,F值:ROC(Receiver Operatin ...

  7. sklearn决策树/随机森林多分类绘制ROC和PR曲线

    有篇讲解原理的博文/论文(可看可不看):<为什么Decision Tree可以绘制出ROC曲线?> 一.数据,并要先one-hot多分类标签 from sklearn.preprocess ...

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

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

  9. 分类模型评估体系:混淆矩阵、PR曲线、F1、Weighted F1、Micro F1、Macro F1、ROCAUC、KS曲线、Lift曲线、GAIN曲线

    目录 混淆矩阵 一类错误+二类错误 查准率(precision)和查全率(recall) PR曲线 调和参数F1

最新文章

  1. LINUX:GRUB破解root密码【远程不可
  2. Android/Java 获取一个byte[]的真实编码,用于解决乱码问题
  3. 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质示例 | 证明 共轭对称序列 x_e(n) 的 傅里叶变换 是 原序列傅里叶变换 的实部 )
  4. 【Groovy】编译时元编程 ( ASTTransformation#visit 方法简介 | org.codehaus.groovy.ast.ModuleNode 脚本节点 )
  5. python多线程并行编程_Python并行编程(二):基于线程的并行
  6. Minor GC和Major GC和Full GC
  7. 关于Asp.Net开发中导入外部JavaScript文件的问题
  8. android 手机获取公网ip_KSWEB 旧手机搭建网站服务
  9. js生成批次号_一文知晓MES系统中的批次管控功能
  10. 如何快速掌握计算机知识,怎样快速学会电脑 学电脑的5种方法推荐
  11. 台式机装mac系统_苹果电脑装双系统mac+win7图文教程
  12. Android结束进程方法
  13. Swift-函数学习
  14. Html meta 标签定义页面元信息 详解
  15. VMware-workstation 密钥
  16. vs2015社区版安装包损坏或丢失
  17. 网页制作中PS图像处理的应用
  18. 【第70期】终于找到了!AI学习路线图——从零基础到就业
  19. web——216中安全色
  20. 【1.7】docker —— 容器

热门文章

  1. Python学习笔记:1.2.8 字典
  2. Direct3D(D3D)简介
  3. Toward Fast, Flexible, and Robust Low-Light Image Enhancement(实现快速、灵活和稳健的弱光图像增强)CVPR2022
  4. 每周好书推荐《那些古怪又令人忧心的问题》
  5. 小米路由器设置DMZ主机 并在外网访问
  6. docker中部署piggymetrics微服务项目
  7. Windows 文件系统过滤驱动开发教程 (第二版)
  8. 关于linux UART驱动和tty架构的理解
  9. MP4和HR-HDTV压制教程
  10. java秋招面试攻略