多分类任务中如何基于F1分数筛选并保留表现优异的类别?
从分类报告中筛选高F1分数类别的方法
核心思路
将分类报告转换为结构化字典格式,遍历每个类别提取F1分数,筛选出分数≥0.7的类别。以下是基于Python scikit-learn库的实现步骤:
具体实现代码
from sklearn.metrics import classification_report import numpy as np # 替换为你实际的真实标签、预测标签和类别名称 y_true = np.array([...]) # 真实标签数组 y_pred = np.array([...]) # 模型预测标签数组 class_names = [...] # 对应50个类别的名称列表(如['class_0', 'class_1', ...]) # 生成结构化分类报告(字典格式) report_dict = classification_report(y_true, y_pred, target_names=class_names, output_dict=True) # 筛选F1分数≥0.7的类别 high_perf_classes = [] for cls in class_names: # 提取当前类别的F1分数 f1 = report_dict[cls]['f1-score'] if f1 >= 0.7: high_perf_classes.append(cls) # 输出结果 print("表现优异的类别:", high_perf_classes)
关键细节说明
- 结构化报告转换:通过
output_dict=True参数,将默认的字符串格式分类报告转为字典,方便直接提取各类别的指标值。 - 排除汇总行:遍历过程仅针对
class_names中的类别,自动跳过分类报告中的macro avg、weighted avg、accuracy等汇总统计行。 - 类别匹配:确保
class_names的顺序和标签编码完全对应,避免提取错误的类别指标。
拿到筛选后的high_perf_classes后,你可以从原始数据集中过滤出仅属于这些类别的样本,重新构建数据集并训练针对性模型。
内容的提问来源于stack exchange,提问作者Ruth Bonet
相关产品推荐
相关产品推荐

