NLP-transformer学习:(7)evaluate实践

news/2024/9/29 1:08:32/

transformer7evaluate__1">NLP-transformer学习:(7)evaluate 使用方法

在这里插入图片描述

打好基础,为了后面学习走得更远。
本章节是单独的 NLP-transformer学习 章节,主要实践了evaluate。同时,最近将学习代码传到:https://github.com/MexWayne/mexwayne_transformers-code,作者的代码版本有些细节我发现到目前不能完全行的通,为了尊重原作者,我这里保持了大部分的内容,并表明了来源,欢迎大家一起学习


提示:以下是本篇文章正文内容,下面案例可供参考

1 evaluate是什么?

evaluate库就是一个非常简单的机器学习评估库函数,封装了很多我们平差给你评估模型的函数。
地址:https://huggingface.co/evaluate-metric
我们可以在这个链接下看到有很多指标,比如 bleu sari precision
在这里插入图片描述

2 evaluate基本用法?

首先需要安装:
pip install evaluate

2.1 evaluate 调用与输入参数

代码:

import evaluateif __name__ == "__main__":# see the evalution function that evaluate supportprint(evaluate.list_evaluation_modules())#print(evaluate.list_evaluation_modules(include_community=False, with_details=True))# load the accuracy class accuracy = evaluate.load("accuracy")# introduce the accuracy functionsprint(accuracy.description)

结果:
在这里插入图片描述
但是看到这 介绍内容太少,我么不清楚输入怎么做

import evaluateif __name__ == "__main__":# load the accuracy class accuracy = evaluate.load("accuracy")# introduce the accuracy functions#print(accuracy.description)# the inputs help guide print(accuracy.inputs_description)

结果:
在这里插入图片描述
这样就会有很多详细,比如
在这里插入图片描述
这里 ,需要是 list of int 的 预测值(predictions)和真值(references),因为总共有6个,reference 和 predictions对的上的就3个,所以accuracy 是 0.5。
在这里插入图片描述
如果权重不同的还可以增加权证欧冠你,这样 accurarcy
在这里插入图片描述

2.2 evaluate 几种计算方式

(1)全局计算

import evaluateif __name__ == "__main__":######################################################## inputs and call # global accuracyaccuracy = evaluate.load("accuracy")results = accuracy.compute(references=[0,1,2,0,1,2], predictions=[0,1,1,2,1,0])print(results)# iterate accurarcyaccuracy = evaluate.load("accuracy")# for refs, preds in zip([[0,1],[0,1]],[2,8],[4,1], [[1,0],[0,1],[3,8],[4,1]]):for refs, preds in zip([0,1,2,3,4],[0,1,2,3,3]):accuracy.add(references=refs, precitions=preds)print(accuracy.compute())

第一个打印结果:
在这里插入图片描述
(2)全局计算

import evaluateif __name__ == "__main__":######################################################## inputs and call # global accuracyaccuracy = evaluate.load("accuracy")results = accuracy.compute(references=[0,1,2,0,1,2], predictions=[0,1,1,2,1,0])print(results)

在这里插入图片描述

(2)迭代计算:

import evaluateif __name__ == "__main__":# iterate accurarcyaccuracy = evaluate.load("accuracy")for refs, preds in zip([0,1,2,3,4],[0,1,2,3,3]):accuracy.add(references=refs, predictions=preds)print("iterate way:")print(accuracy.compute())

结果
在这里插入图片描述
(3)batch 迭代计算

import evaluateif __name__ == "__main__":# batch iterate accurarcyaccuracy = evaluate.load("accuracy")for refs, preds in zip([[0,1,2,3,4], [0,1,2,3,3], [8,8,8,8,8]],  # refs batches[[0,1,2,3,4], [0,1,2,3,5], [8,8,8,8,8]]):  # preds batchesaccuracy.add_batch(references=refs, predictions=preds)print("batch iterate way:")print(accuracy.compute())

结果:
在这里插入图片描述

(4)多指标
这里 我们选择 accuracy,precsion, f1, recall
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

import evaluateif __name__ == "__main__":# multiple labelsclf_metrics = evaluate.combine(["accuracy", "f1", "recall", "precision", "XNLI", "SARI"])print(clf_metrics.compute(predictions=[0, 1, 1, 1, 1], references=[0, 1, 0, 1, 1]))

运行结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3 评估可视化

有多个模型,然后都去做预测,我们需要可视化比较

import evaluateif __name__ == "__main__":##################################################### visualfrom evaluate.visualization import radar_plotdata = [{"accuracy": 0.99, "precision": 0.80, "f1": 0.95, "latency_in_seconds": 33.6 , "recall":0.5},{"accuracy": 0.98, "precision": 0.87, "f1": 0.91, "latency_in_seconds": 11.2 , "recall":0.5},{"accuracy": 0.98, "precision": 0.78, "f1": 0.88, "latency_in_seconds": 87.6 , "recall":0.6}, {"accuracy": 0.88, "precision": 0.78, "f1": 0.81, "latency_in_seconds": 101.6, "recall":0.7},{"accuracy": 0.78, "precision": 0.78, "f1": 0.81, "latency_in_seconds": 100.0, "recall":0.9}]model_names = ["Model 1", "Model 2", "Model 3", "Model 4", "Model 5"]plot = radar_plot(data=data, model_names=model_names)print(type(plot))plot.show()plot.savefig('radar.png')

结果
在这里插入图片描述


http://www.ppmy.cn/news/1531175.html

相关文章

人工智能助力阿尔茨海默症治疗:微软与上海精神卫生中心的新研究

最近,微软研究院与上海市精神卫生中心合作,基于微软 Azure OpenAI 服务中的多模态大模型,开发了一种名为“忆我”(ReMe)的个性化认知训练框架。这一创新项目旨在通过数字化手段扩展自动化认知训练的范围,为…

网络原理 - TCP/IP

文章目录 传输层UDP协议TCP协议TCP协议的核心机制确认应答机制超时重传机制连接管理三次握手四次挥手 滑动窗口流量控制拥塞控制延迟应答捎带应答面向字节流粘包问题 异常情况 小结 网络层IP协议IP地址不够用的问题一、动态分配IP地址二、 NAT机制(网络地址映射)三、使用IPv6 地…

智能工牌如何通过自然语义处理技术帮助企业提高业务复盘效率?

在数字化转型的大潮中,企业不断寻求新的工具和技术来优化运营流程、提升工作效率。智能工牌作为一种新兴的技术解决方案,正在逐渐改变企业的管理方式,特别是在销售和服务领域。本文将探讨智能工牌如何利用自然语义理解技术来帮助企业提高业务…

【图文详解!】u盘拷贝文件管控如何实现?禁止U盘拷贝电脑文件的三大秘诀!

“数据如黄金,防护需用心。” 在当今信息化时代,数据的安全性和隐私性显得尤为重要。 U盘已成为我们日常工作中不可或缺的工具。然而,U盘的便携性也让它成为数据泄露的主要途径之一。 因此,为了保障数据安全,我们需要…

【机器学习】生成对抗网络(GAN)——生成新数据的神经网络

生成对抗网络(Generative Adversarial Networks,简称GAN)是一种创新的神经网络结构,近年来在机器学习和人工智能领域引起了广泛的关注。GAN的核心思想是通过两个神经网络的对抗性训练,生成高质量的、与真实数据相似的新…

el-input仅限输入数字 (输入框仅支持输入数字)

需求&#xff1a;日常开发中会遇到输入框只能输入数字的功能。常用的方法有下面几种 方式1 (将输入框类型改成number) <el-input v-model"number" type"number"/>方式2 (使用正则控制) 推荐使用该方式 <el-input v-model"value1" pla…

c语言:知识补充

c语言中编译开始会对#define&#xff0c;#include等内容做预处理&#xff0c;可以用#define写一些简单函数&#xff0c;方便使用 #include <stdio.h> #include <stdlib.h>#define MAX(A, B) ((A) > (B) ? (A) : (B))int main(){printf("%d\n", MAX(…

C语言版入门编程题(力扣):数组元素和与数字和的绝对差

1.题目描述&#xff1a; 给你一个正整数数组 nums 。 元素和 是 nums 中的所有元素相加求和。数字和 是 nums 中每一个元素的每一数位&#xff08;重复数位需多次求和&#xff09;相加求和。 返回 元素和 与 数字和 的绝对差。 注意&#xff1a;两个整数 x 和 y 的绝对差定…