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')

结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值