当前位置: 首页 > article >正文

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

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 evaluate

if __name__ == "__main__":
    
    # see the evalution function that evaluate support
    print(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 functions
    print(accuracy.description)

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

import evaluate

if __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 evaluate

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

    # iterate accurarcy
    accuracy = 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 evaluate

if __name__ == "__main__":

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

在这里插入图片描述

(2)迭代计算:

import evaluate

if __name__ == "__main__":

    # iterate accurarcy
    accuracy = 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 evaluate

if __name__ == "__main__":
    # batch iterate accurarcy
    accuracy = 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 batches
        accuracy.add_batch(references=refs, predictions=preds)
    print("batch iterate way:")
    print(accuracy.compute())

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

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

import evaluate

if __name__ == "__main__":

    # multiple labels
    clf_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 evaluate

if __name__ == "__main__":
    ##################################################### visual
    from evaluate.visualization import radar_plot
    data = [
        {"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.kler.cn/a/321138.html

相关文章:

  • JWTUtil工具类
  • Python_爬虫1_Requests库入门
  • 领夹麦克风哪个品牌好,手机领夹麦克风哪个牌子好,选购推荐
  • 机器学习day5-随机森林和线性代数1
  • Win11 终端执行 python xxx.py 没反应
  • 【Linux网络编程】简单的UDP网络程序
  • ??实验——完全使用Ansible部署多台服务器的服务
  • MedPrompt:基于提示工程的医学诊断准确率优化方法
  • GS-SLAM论文阅读笔记--GEVO
  • nodejs基于vue+express度假村旅游管理系统设计与实现7t82p
  • 【C++ 学习】多态的基础和原理(10)
  • Unity3D 中构建行为树插件详解
  • AI论文写作网站哪个最好用?亲测完推荐这款!
  • 【数据库】
  • 学习篇 | 5步安装 npm node(homebrew 简洁版)
  • Interaction to Next Paint 指标
  • STL之vector篇(下)(手撕底层代码,从零实现vector的常用指令,深度剖析并优化其核心代码)
  • 第18周 3-过滤器
  • 如何进行SQL调优?
  • 黑龙江亿林自研等保一体机深度解析
  • Vue Devtools -----一条龙安装教程 + 解决安装使用过程的一些问题
  • EdgeRoute_镜像烧录
  • 通过 Java Vector API 利用 SIMD 的强大功能
  • 2024-2025华为ICT大赛报名|赛前辅导|学习资料
  • OpenHarmony标准系统mipi摄像头适配
  • IIS+Ngnix+Tomcat 部署网站 用IIS实现反向代理