news 2026/4/18 7:57:15

机器学习 - 精确率与召回率

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
机器学习 - 精确率与召回率

摘要:精确率和召回率是评估分类模型性能的关键指标,特别适用于不平衡数据集。精确率反映预测为正类的准确性(TP/(TP+FP)),召回率衡量对实际正类的识别能力(TP/(TP+FN))。以垃圾邮件检测为例,高精确率表示较少误判合法邮件,高召回率意味着能捕捉更多垃圾邮件。通过scikit-learn的precision_score()和recall_score()函数可计算这两个指标,示例代码展示了在乳腺癌数据集上训练逻辑回归模型并评估其性能(精确率94.6%,召回率98.6%)。这两个指标共同帮助优化模型在不同场景下的表现。

目录

机器学习 - 精确率与召回率

Python 实现

示例代码

代码说明

输出结果


机器学习 - 精确率与召回率

精确率(Precision)和召回率(Recall)是机器学习中评估分类模型性能的两个重要指标,在不平衡数据集(即某一类别的样本数量显著少于另一类别)的评估中尤为实用。

精确率衡量分类器做出的正类预测中,实际为正确预测的比例,其定义为真阳性(TP)与所有正类预测结果(TP + 假阳性 FP)的比值,即精确率 = 真阳性 /(真阳性 + 假阳性),反映了所有被预测为正类的样本中真正正类的占比。

召回率则衡量所有实际为正类的样本中,被分类器正确识别的比例,定义为真阳性(TP)与所有实际正类样本(TP + 假阴性 FN)的比值,即召回率 = 真阳性 /(真阳性 + 假阴性),体现了分类器对实际正类样本的捕捉能力。

以垃圾邮件检测问题为例可更好理解二者:分类器会将邮件标记为垃圾邮件(正类预测)或非垃圾邮件(负类预测),邮件实际标签也分为垃圾邮件和非垃圾邮件。实际为垃圾邮件且被正确标记为垃圾邮件的是真阳性;实际非垃圾邮件却被误标为垃圾邮件的是假阳性;实际为垃圾邮件但被误标为非垃圾邮件的是假阴性;实际非垃圾邮件且被正确标记的是真阴性。在此场景中,精确率反映分类器正确识别的垃圾邮件占所有被标记为垃圾邮件的比例,高精确率意味着分类器能准确识别多数垃圾邮件,且很少将合法邮件误判为垃圾邮件;召回率反映分类器正确识别的垃圾邮件占所有实际垃圾邮件的比例,高召回率意味着分类器能捕捉到多数垃圾邮件,即便可能将部分合法邮件误判为垃圾邮件。

Python 实现

在 scikit-learn 库中,可分别使用 precision_score () 函数和 recall_score () 函数计算精确率和召回率。这两个函数接收真实标签和预测标签作为输入,返回对应的精确率得分和召回率得分。

以下代码示例使用 scikit-learn 中的乳腺癌数据集训练逻辑回归分类器,并评估其精确率和召回率:

示例代码

from sklearn.datasets import load_breast_cancer from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split from sklearn.metrics import precision_score, recall_score # 加载乳腺癌数据集 data = load_breast_cancer() # 将数据分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42) # 训练逻辑回归分类器 clf = LogisticRegression(random_state=42) clf.fit(X_train, y_train) # 在测试集上进行预测 y_pred = clf.predict(X_test) # 计算精确率和召回率 precision = precision_score(y_test, y_pred) recall = recall_score(y_test, y_pred) print("精确率:", precision) print("召回率:", recall)

代码说明

  1. 首先加载乳腺癌数据集,并按 8:2 的比例将数据划分为训练集和测试集(test_size=0.2),设置 random_state=42 保证结果可复现;
  2. 初始化逻辑回归分类器,使用训练集数据训练模型;
  3. 调用 predict () 方法在测试集上生成预测结果;
  4. 利用 precision_score () 和 recall_score () 函数分别计算模型的精确率和召回率,并打印输出。

输出结果

运行上述代码后,将得到以下输出:精确率: 0.9459459459459459召回率: 0.9859154929577465

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

P0951BA-0E FBP10处理器模块

P0951BA‑0E FBP10 处理器模块简介: P0951BA‑0E FBP10 处理器模块是用于工业自动化系统的核心运算单元,负责接收、处理和控制系统中各类输入输出信号,实现逻辑运算、数据处理和通讯任务。它在控制系统中承担主控角色,为复杂自动化…

作者头像 李华
网站建设 2026/4/17 21:08:59

未来TRO法律程序会变得更友好还是更严苛?

引言 过去几年,TRO已经从“偶发风险”变成跨境卖家的“高频事件”。无论是亚马逊、Temu、eBay还是速卖通,越来越多卖家发现,自己并未收到任何提前警告,账户资金却已经被冻结,店铺被限制,甚至多个平台同时受…

作者头像 李华
网站建设 2026/4/18 0:29:19

手写 Java 线程池:从状态转换到拒绝策略的极致实现

🚀 引言:为什么要手写线程池? 在日常开发中,我们习惯了 Executors.newFixedThreadPool() 或者直接 new ThreadPoolExecutor()。但你是否思考过: 为什么线程池能让线程“长生不老”而不被销毁?一个 int 变…

作者头像 李华
网站建设 2026/4/18 10:28:39

一文读懂亚马逊SIOC包装测试标准

亚马逊物流中,自有容器运输(SIOC)包装需通过专项测试保障商品完好。由ISTA与亚马逊联合制定的《ISTA 6-AMAZON.COM-SIOC标准》,是测试核心依据,2016年发布后始终是卖家合规的关键参考。该标准专为亚马逊配送的SIOC商品…

作者头像 李华
网站建设 2026/4/18 0:30:55

2026版最全面Java面试汇总(面试题+答案)

今年的行情,让招聘面试变得雪上加霜。已经有不少大厂,如腾讯、字节跳动的招聘名额明显减少,面试门槛却一再拔高,如果不用心准备,很可能就被面试官怼得哑口无言,甚至失去了难得的机会。 现如今,…

作者头像 李华
网站建设 2026/4/17 4:13:27

惊!IF持续下跌,中科院1区Top或将降为2区

🔥 🔥 🔥 🔥 《IEEE Transactions on Neural Networks and Learning Systems》由IEEE计算智能学会于 1990 年创刊,在神经网络、机器学习、深度学习及相关交叉领域享有极高的学术声誉和影响力。 值得注意的是&a…

作者头像 李华