evaluate
库使用指南
evaluate
是一个强大的 Python 库,用于计算和可视化机器学习模型的评估指标。本教程将带你逐步了解如何使用该库,包括加载评估函数、计算指标以及可视化结果。
1. 查看支持的评估函数
evaluate
库支持多种评估指标,例如 accuracy
(准确率)、f1
(F1 分数)、precision
(精确率)和 recall
(召回率)。你可以通过以下方式查看支持的评估函数:
import evaluate
# 查看支持的评估函数列表
evaluate.list_evaluation_modules()
注意:截至 2024-01-11,list_evaluation_modules()
可能无法完整显示所有支持的指标,但这不影响使用。你可以在 Hugging Face 官网 查看完整的评估函数列表。
2. 加载评估函数
要使用某个评估指标,首先需要加载它。例如,加载 accuracy
指标:
accuracy = evaluate.load("accuracy")
这个加载很容易由于网络问题不能加载
这会返回一个评估对象,你可以用它来计算准确率。
3. 查看函数说明
加载评估函数后,可以查看其描述和输入要求:
# 查看指标的描述
print(accuracy.description)
# 查看输入参数的说明
print(accuracy.inputs_description)
# 查看评估对象的详细信息
print(accuracy)
输出将告诉你该指标的作用以及它期望的输入格式。例如,accuracy
需要 references
(真实标签)和 predictions
(预测标签)。
4. 评估指标计算
4.1 全局计算
你可以一次性计算整个数据集的指标:
accuracy = evaluate.load("accuracy")
results = accuracy.compute(references=[0, 1, 2, 0, 1, 2], predictions=[0, 1, 1, 2, 1, 0])
print(results)
输出示例:
{'accuracy': 0.5}
这里,references
是真实标签,predictions
是模型预测结果。结果显示准确率为 50%。
4.2 迭代计算
如果数据量很大,可以通过迭代的方式逐步添加数据:
单样本迭代
accuracy = evaluate.load("accuracy")
for ref, pred in zip([0, 1, 0, 1], [1, 0, 0, 1]):
accuracy.add(references=ref, predictions=pred)
result = accuracy.compute()
print(result)
批量迭代
accuracy = evaluate.load("accuracy")
for refs, preds in zip([[0, 1], [0, 1]], [[1, 0], [0, 1]]):
accuracy.add_batch(references=refs, predictions=preds)
result = accuracy.compute()
print(result)
两种方法都适合处理流式数据或大数据集。
5. 多个评估指标计算
你可以使用 evaluate.combine
同时加载多个指标:
clf_metrics = evaluate.combine(["accuracy", "f1", "recall", "precision"])
print(clf_metrics)
然后一次性计算所有指标:
results = clf_metrics.compute(predictions=[0, 1, 0], references=[0, 1, 1])
print(results)
输出示例:
{'accuracy': 0.6667, 'f1': 0.6667, 'recall': 0.5, 'precision': 1.0}
这对于分类任务非常有用,可以全面评估模型性能。
6. 评估结果对比可视化
evaluate
提供了可视化工具,目前支持雷达图(radar_plot
):
from evaluate.visualization import radar_plot
# 准备数据
data = [
{"accuracy": 0.99, "precision": 0.8, "f1": 0.95, "latency_in_seconds": 33.6},
{"accuracy": 0.98, "precision": 0.87, "f1": 0.91, "latency_in_seconds": 11.2},
{"accuracy": 0.98, "precision": 0.78, "f1": 0.88, "latency_in_seconds": 87.6},
{"accuracy": 0.88, "precision": 0.78, "f1": 0.81, "latency_in_seconds": 101.6}
]
model_names = ["Model 1", "Model 2", "Model 3", "Model 4"]
# 生成雷达图
plot = radar_plot(data=data, model_names=model_names)
这将生成一个雷达图,比较不同模型在多个指标上的表现。每个模型用一条线表示,指标(如 accuracy
、f1
等)分布在图的轴上。
总结
通过本教程,你学会了如何:
- 查看和加载
evaluate
库支持的评估指标。 - 使用全局或迭代方法计算单个指标。
- 组合多个指标进行综合评估。
- 可视化评估结果以对比模型性能。
evaluate
库简单易用,特别适合机器学习从业者和研究人员快速评估模型。更多信息可参考 官方文档。