news 2026/9/8 15:15:25

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

作者头像

张小明

前端开发工程师

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/9/3 5:35:01

Python 一行代码实现计数统计:dict.get() 的巧妙用法

Python 一行代码实现计数统计:dict.get() 的巧妙用法 在 Python 中统计元素出现次数是一个常见需求。今天分享一个经典且优雅的写法,只需一行代码就能搞定: app_stats[entry.app_id] app_stats.get(entry.app_id, 0) 1场景还原 假设我们在分…

作者头像 李华
网站建设 2026/9/2 19:10:26

大模型学习路线图:从概念到实践(程序员必备,建议收藏)

本文全面介绍了大模型的基本概念、训练过程、应用领域、发展趋势及挑战。大模型是包含超大规模参数的神经网络模型,通过预训练和微调获得知识,具备涌现和泛化能力。当前大模型广泛应用于语言、音频、视觉等领域,呈现"百模大战"和&q…

作者头像 李华
网站建设 2026/9/3 5:34:59

基于深度学习的交通标志识别研究与应用

目录 深度学习在交通标志识别中的核心方法关键技术优化方向实际应用场景部署性能评估指标 项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作 深度学习在交通标志识别中的核心方法 卷积神经网络(…

作者头像 李华
网站建设 2026/9/3 5:35:03

【开题答辩全过程】以 基于Java的九价疫苗预约系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

作者头像 李华
网站建设 2026/9/3 5:35:00

HighGoDB 用户密码安全策略

文章目录 环境文档用途详细信息 环境 系统平台:Linux x86-64 Red Hat Enterprise Linux 7 版本:4.3.2 文档用途 通过调用函数的方式增强用户密码的安全性 详细信息 一般来说数据库密码安全管理要考虑以下几个方面 : 密码过期策略, 决定密码的有效期…

作者头像 李华
网站建设 2026/9/3 5:35:06

Substance P (1-9) ;RPKPQPFG

一、基础信息 英文名称:Substance P (1-9)三字母序列:Arg-Pro-Lys-Pro-Gln-Gln-Phe-Phe-Gly单字母序列:RPKPQPFG精确分子量:1104.28 Da等电点(pI):6.2~6.7,弱酸性分子式&#xff1a…

作者头像 李华