在 100 个样本中若只有 5 个阳性,把所有样本都预测为阴性也有 95% 准确率,但阳性召回率为 0。评估不平衡分类时,至少把 Precision、Recall、F1、支持样本数和混淆矩阵一起看。
四个数字分别回答什么
- Accuracy:全部样本中预测正确的比例。
- Precision:预测为阳性的样本里有多少是真的。
- Recall:真实阳性里找回了多少。
- F1:Precision 与 Recall 的调和平均,不能替代业务成本。
标题结论:不平衡数据只看准确率可能掩盖少数类完全漏检,Precision、Recall 与 F1 要结合正类定义和错误成本解释。

先用极端基线暴露问题
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
y_true = [0] * 95 + [1] * 5
y_pred = [0] * 100
print("accuracy", accuracy_score(y_true, y_pred))
print(confusion_matrix(y_true, y_pred, labels=[0, 1]))
print(classification_report(y_true, y_pred, labels=[0, 1],
zero_division=0, digits=3))
读者下一步:先明确哪个标签是业务正类,再把固定测试集的真实标签和预测标签替换进示例。
选择指标要写出代价
疾病初筛、欺诈拦截等漏掉阳性代价高的任务通常先守住 Recall,再观察 Precision 带来的人工复核量;错误报警代价高时则需要提高 Precision。多分类任务还要写清 macro、weighted 或每类指标,不能只报一个平均数。
结果验证:该极端示例必须显示 accuracy 为 0.95,同时正类 recall 和 F1 为 0;若报告没有这个反差,检查正类标签与 labels 顺序。
边界
失败边界:本文没有给出通用阈值,也没有证明 F1 越高业务就越好;概率阈值必须在独立验证集上选择,并在从未参与调参的测试集上最终报告。
依据与核验日期
- scikit-learn 模型评估文档:定义 precision、recall、F1、平均方式和零除行为
以上页面于 2026-10-01 核验。版本更新后,应重新查看参数含义和默认值。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/31191.html