如何在Azure AI Foundry评估中获取精确率/召回率/F1分数
实现Azure AI Foundry文本分类器的精确率、召回率及F1分数计算
要在现有String Check评估的基础上获取精确率、召回率和F1分数,核心是先区分分类场景下的**真阳性(TP)、假阳性(FP)、假阴性(FN)、真阴性(TN)**四类样本,再基于这些统计值推导指标。以下是两种简便实现方式:
方法一:扩展现有String Check规则,自定义计算逻辑
利用Azure AI Foundry Review Evaluation的自定义表达式功能,直接在现有评估流程中新增指标:
定义四类样本统计规则
假设你的数据集包含actual_class字段存储样本真实类别(若字段名不同请替换),添加四个自定义指标:- TP(真阳性):
IF(AND({{sample.output_text}} CONTAINS {{item.humanlabel}}, {{item.actual_class}} == {{item.humanlabel}}), 1, 0) - FP(假阳性):
IF(AND({{sample.output_text}} CONTAINS {{item.humanlabel}}, {{item.actual_class}} != {{item.humanlabel}}), 1, 0) - FN(假阴性):
IF(AND(NOT({{sample.output_text}} CONTAINS {{item.humanlabel}}), {{item.actual_class}} == {{item.humanlabel}}), 1, 0) - TN(真阴性):
IF(AND(NOT({{sample.output_text}} CONTAINS {{item.humanlabel}}), {{item.actual_class}} != {{item.humanlabel}}), 1, 0)
- TP(真阳性):
推导核心评估指标
基于上述统计值,添加三个最终指标:- 精确率:
SUM(TP) / (SUM(TP) + SUM(FP))(分母为0时设为1) - 召回率:
SUM(TP) / (SUM(TP) + SUM(FN))(分母为0时设为1) - F1分数:
2 * (精确率 * 召回率) / (精确率 + 召回率)(分母为0时设为0)
- 精确率:
配置到评估面板
将所有表达式添加为新的评估指标,平台会自动在评估时汇总计算结果。
方法二:使用自定义评估脚本(复杂场景适用)
如果是多标签分类等复杂场景,可编写Python脚本作为自定义评估组件:
def calculate_classification_metrics(samples): tp = fp = fn = tn = 0 for sample in samples: output_has_label = sample["humanlabel"] in sample["output_text"] actual_matches = sample["actual_class"] == sample["humanlabel"] if output_has_label and actual_matches: tp += 1 elif output_has_label and not actual_matches: fp += 1 elif not output_has_label and actual_matches: fn += 1 else: tn += 1 precision = tp / (tp + fp) if (tp + fp) > 0 else 1.0 recall = tp / (tp + fn) if (tp + fn) > 0 else 1.0 f1 = 2 * (precision * recall) / (precision + recall) if (precision + recall) > 0 else 0.0 return { "precision": precision, "recall": recall, "f1_score": f1, "accuracy": (tp + tn) / (tp + tn + fp + fn) if (tp + tn + fp + fn) > 0 else 0.0 }
将脚本打包为评估组件,关联到你的文本分类器项目,运行评估后即可直接获取所有指标。
注意事项
- 必须确保数据集包含真实类别字段,这是区分四类样本的核心依据
- 多标签分类场景需调整逻辑,为每个标签单独计算TP/FP/FN,再通过宏平均或微平均得到整体指标
内容的提问来源于stack exchange,提问作者CrowsNose
相关产品推荐
相关产品推荐

