news 2026/6/25 18:32:41

准确率、精确率、召回率和 F1 到底怎么看?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
准确率、精确率、召回率和 F1 到底怎么看?

分类模型不能只看“猜对多少”。在垃圾短信、疾病筛查和风险识别中,漏掉一个正例和误判一个正常样本,代价可能完全不同。

理解分类指标,最好先从混淆矩阵开始。

视频讲解:在官网观看本课视频

混淆矩阵记录四种结果

以“垃圾短信”为正类:

真实情况 / 预测结果预测垃圾预测正常
实际垃圾TPFN
实际正常FPTN
  • TP:垃圾短信被正确识别;

  • TN:正常短信被正确放行;

  • FP:正常短信被误判为垃圾;

  • FN:垃圾短信被漏掉。

Accuracy:整体猜对多少

Accuracy = (TP + TN) / 全部样本

类别比较均衡时,准确率很直观。但如果 1000 条短信中只有 10 条垃圾短信,模型把所有短信都判断为正常,也有 99% 的准确率,却完全没有识别能力。

Precision:预测为正的结果有多可靠

Precision = TP / (TP + FP)

精确率高,说明模型一旦说“这是垃圾短信”,通常是可信的。误判正常短信代价很高时,应重点关注精确率。

Recall:真正的正例找回了多少

Recall = TP / (TP + FN)

召回率高,说明真正的垃圾短信很少漏掉。疾病筛查、安全风险检测等不希望漏判的任务,通常更关注召回率。

F1:平衡 Precision 和 Recall

F1 = 2 × Precision × Recall / (Precision + Recall)

F1 是二者的调和平均。只有 Precision 和 Recall 都比较好时,F1 才会高,适合类别不均衡且两种错误都需要考虑的场景。

指标必须对应业务代价

没有一个指标永远最好。选择指标前应该问:

  • 漏掉一个正例的代价是什么?

  • 错判一个负例的代价是什么?

  • 类别是否严重不均衡?

  • 是否需要分别观察每个类别?

技术图:把关键链路画清楚

可运行实验:从同一个混淆矩阵计算四个指标

指标不是互相独立的公式,它们都来自混淆矩阵。先固定一组预测结果,再观察 Accuracy、Precision、Recall 和 F1 如何描述不同问题。

from sklearn.metrics import accuracy_score, confusion_matrix, precision_recall_fscore_support ​ y_true = [1, 1, 1, 1, 0, 0, 0, 0] y_pred = [1, 1, 0, 0, 1, 0, 0, 0] p, r, f1, _ = precision_recall_fscore_support(y_true, y_pred, average="binary") print("混淆矩阵:\n", confusion_matrix(y_true, y_pred)) print(f"Accuracy={accuracy_score(y_true, y_pred):.3f}") print(f"Precision={p:.3f} Recall={r:.3f} F1={f1:.3f}")

运行结果:

混淆矩阵: [[3 1] [2 2]] Accuracy=0.625 Precision=0.667 Recall=0.500 F1=0.571

模型预测为正的 3 个样本里有 2 个正确,因此 Precision 为 2/3;真实正例有 4 个,只找回 2 个,因此 Recall 为 1/2。

常见误区

  1. Accuracy 高就代表模型好。类别极不平衡时,全猜多数类也可能很高。

  2. Precision 和 Recall 可以同时随意提高。固定模型下二者通常受阈值影响,需要按业务代价取舍。

动手练习

把第三个预测从0改成1,重新计算指标,并解释为什么 Recall 上升。

这一课先记住什么

Accuracy 看整体,Precision 关注误判,Recall 关注漏判,F1 在两者之间取平衡。评价模型时不要只报一个数字。

下一课会讨论模型最常见的两种学习问题:过拟合和欠拟合


本文首发于「去你想去的地方」: https://bestsdz.xyz/posts/classification-metrics/

完整学习路线、视频版和后续更新请访问原文。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/25 18:31:55

C语言基础回炉第六天:补漏洞、跑验收、串起 STM32 数据链路

前言前五天我主要在补 C 语言和嵌入式常用数据处理能力:位运算、字符串和内存函数、链表、数组查找、环形缓冲区、UART 帧解析。今天不是继续盲目往后学新知识,而是先做一次集中验收,再把这些训练内容放回自己的真实项目里理解。这一天的重点…

作者头像 李华
网站建设 2026/6/25 18:29:46

TD-Learning与ϵ-greedy:从经验中学习的强化学习实战核心

1. 项目概述:从“纸上谈兵”到“真刀真枪”的强化学习跃迁你有没有试过学开车?教练在副驾上给你讲了一堆离合、油门、转向的原理,你听得头头是道,可一坐上驾驶座,手忙脚乱,方向盘打反,油门当刹车…

作者头像 李华
网站建设 2026/6/25 18:28:03

用真实气象数据来学习python可视化分析

目录 一、我们为什么要去学习python可视化? 二、为什么用气象数据? 真实项目里怎么更新数据? 三、如何选图:先读表,再想问题 四、matplotlib 基础 四步画图模板 五、八种常用图表详解 5.1 折线图(Lin…

作者头像 李华
网站建设 2026/6/25 18:26:30

AI技术落地的七道生死关:从产线到医疗的系统性实践指南

1. 项目概述:这不是一场关于“未来”的演讲,而是一份AI技术落地的实操手记“Artificial Intelligence and Technological Development.”——这个标题乍看像大学通识课的PPT封面,或是某场行业峰会的背景板标语。但在我过去十年跑遍制造业产线…

作者头像 李华
网站建设 2026/6/25 18:24:56

如何高效使用Ryujinx:免费开源的Nintendo Switch模拟器完整指南

如何高效使用Ryujinx:免费开源的Nintendo Switch模拟器完整指南 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx Ryujinx是一款用C#编写的实验性Nintendo Switch模拟器&…

作者头像 李华
网站建设 2026/6/25 18:22:17

邮编驱动的医疗可及性数据管道构建指南

1. 项目概述:当邮编成为健康公平的隐形标尺“你的邮编正在决定你获得的医疗服务”——这句话听起来像一句社会评论,但在我实际跑通这个项目之前,它只是个模糊的共识。直到我拿到英国NHS(国家医疗服务体系)公开的基层诊…

作者头像 李华