机器学习中绘制(多标签)PR曲线和F1-score【转载】
参考: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【转载】相关推荐
- 机器学习:PR曲线及F1 score
PR曲线及F1 score Pecision 和 Recall PR曲线 PR曲线的绘制 PR曲线的性能比较 F1 score F1 的一般形式 macro-F1 micro-F1 Pecision ...
- R语言使用pROC包在同一图中绘制两条ROC曲线并通过假设检验检验ROC曲线的AUC或者偏AUC的差异(输出p值)
R语言使用pROC包在同一图中绘制两条ROC曲线并通过假设检验检验ROC曲线的AUC或者偏AUC的差异(输出p值) 目录
- 机器学习性能度量(1):P-R曲线与ROC曲线,python sklearn实现
最近做实验要用到性能度量的东西,之前学习过现在重新学习并且实现一下. 衡量模型泛化能力的评价标准,这就是性能度量.性能度量反应了任务需求,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判 ...
- 机器学习笔记(一)P-R曲线与ROC曲线
P-R曲线与ROC曲线 一.什么是P-R曲线? 二.什么是ROC曲线? 三.P-R曲线与ROC曲线有什么用? 三.绘制P-R曲线代码 一.什么是P-R曲线? 要知道什么是P-R曲线,首先,我们要先了解 ...
- python画两条曲线_查找在matplotlib中绘制的两条曲线之间的区域(在区域之间填充)...
我有两条曲线的x和y值列表,它们都有奇怪的形状,而且我没有任何函数.我需要做两件事:(1)绘制它并对曲线之间的区域进行着色,如下图所示:(2)找到曲线之间该着色区域的总面积. 在matplotlib中 ...
- 【机器学习-西瓜书】二、性能度量:召回率;P-R曲线;F1值;ROC;AUC
关键词:准确率(查准率,precision):召回率(查全率,recall):P-R曲线,平衡点(Break-Even Point, BEP):F1值,F值:ROC(Receiver Operatin ...
- sklearn决策树/随机森林多分类绘制ROC和PR曲线
有篇讲解原理的博文/论文(可看可不看):<为什么Decision Tree可以绘制出ROC曲线?> 一.数据,并要先one-hot多分类标签 from sklearn.preprocess ...
- 目标检测评价指标汇总—mAP,PR曲线,F1分数,FPPI,log-average miss rate等
对于了解目标检测的评价指标是很重要的,否则自己不懂这个代表什么意思,如何调参.网上有太多资料,可是杂乱,甚至有一乱说,记录下自己所学,总结下,也分享出来,也便于自己自己复习. 分为三块,1.解释相关概 ...
- 分类模型评估体系:混淆矩阵、PR曲线、F1、Weighted F1、Micro F1、Macro F1、ROCAUC、KS曲线、Lift曲线、GAIN曲线
目录 混淆矩阵 一类错误+二类错误 查准率(precision)和查全率(recall) PR曲线 调和参数F1
最新文章
- LINUX:GRUB破解root密码【远程不可
- Android/Java 获取一个byte[]的真实编码,用于解决乱码问题
- 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质示例 | 证明 共轭对称序列 x_e(n) 的 傅里叶变换 是 原序列傅里叶变换 的实部 )
- 【Groovy】编译时元编程 ( ASTTransformation#visit 方法简介 | org.codehaus.groovy.ast.ModuleNode 脚本节点 )
- python多线程并行编程_Python并行编程(二):基于线程的并行
- Minor GC和Major GC和Full GC
- 关于Asp.Net开发中导入外部JavaScript文件的问题
- android 手机获取公网ip_KSWEB 旧手机搭建网站服务
- js生成批次号_一文知晓MES系统中的批次管控功能
- 如何快速掌握计算机知识,怎样快速学会电脑 学电脑的5种方法推荐
- 台式机装mac系统_苹果电脑装双系统mac+win7图文教程
- Android结束进程方法
- Swift-函数学习
- Html meta 标签定义页面元信息 详解
- VMware-workstation 密钥
- vs2015社区版安装包损坏或丢失
- 网页制作中PS图像处理的应用
- 【第70期】终于找到了!AI学习路线图——从零基础到就业
- web——216中安全色
- 【1.7】docker —— 容器
热门文章
- Python学习笔记:1.2.8 字典
- Direct3D(D3D)简介
- Toward Fast, Flexible, and Robust Low-Light Image Enhancement(实现快速、灵活和稳健的弱光图像增强)CVPR2022
- 每周好书推荐《那些古怪又令人忧心的问题》
- 小米路由器设置DMZ主机 并在外网访问
- docker中部署piggymetrics微服务项目
- Windows 文件系统过滤驱动开发教程 (第二版)
- 关于linux UART驱动和tty架构的理解
- MP4和HR-HDTV压制教程
- java秋招面试攻略