news 2026/5/1 4:59:58

机器学习 - 贝叶斯定理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
机器学习 - 贝叶斯定理

摘要:贝叶斯定理是概率论基础概念,亦是机器学习中概率推理与决策的核心,其数学公式为 P (A | B) = P (B | A) × P (A) / P (B),可基于新证据更新事件发生概率,广泛应用于垃圾邮件过滤、医疗诊断、图像识别等场景,在机器学习中常用于贝叶斯推断以更新模型参数认知。在 Python 中,scikit-learn 库可实现该定理相关功能,以文本分类为例,通过加载 20 个新闻组数据集并选取 4 个类别,利用 CountVectorizer 将文本转换为词袋模型向量,再训练多项式朴素贝叶斯分类器,经最大似然估计求解模型参数后,在测试集上预测并计算准确率,最终该分类器准确率达 0.934 左右,展现了贝叶斯定理在实际任务中的有效性。

目录

机器学习 - 贝叶斯定理

Python 实现

示例代码

代码说明

输出结果


机器学习 - 贝叶斯定理

贝叶斯定理是概率论中的一个基础概念,在机器学习中有着诸多应用。它允许我们在获得新证据的情况下,更新对某个事件发生概率的认知。实际上,它是概率推理和决策制定的基础。

贝叶斯定理指出,在给定证据 B 的条件下事件 A 发生的概率,等于在给定事件 A 的条件下证据 B 出现的概率乘以事件 A 的先验概率,再除以证据 B 的概率。用数学公式可表示为:

其中:

  • P (A | B):给定证据 B 时事件 A 发生的概率(后验概率)
  • P (B | A):给定事件 A 时证据 B 出现的概率(似然度)
  • P (A):事件 A 的先验概率(我们对事件 A 发生概率的初始认知)
  • P (B):证据 B 的概率(总概率)

贝叶斯定理的应用范围广泛,例如垃圾邮件过滤、医疗诊断和图像识别等领域。在机器学习中,贝叶斯定理常用于贝叶斯推断 —— 这是一种基于新数据更新模型参数认知的统计技术。

Python 实现

在 Python 中,有多个库可实现贝叶斯定理和贝叶斯推断。其中最常用的是 scikit-learn 库,该库提供了一系列机器学习和数据分析工具。

下面以一个实例说明如何使用 scikit-learn 库在 Python 中实现贝叶斯定理。假设我们有一个电子邮件数据集,其中部分邮件为垃圾邮件,其余为非垃圾邮件。我们的目标是构建一个分类器,能够准确预测新邮件是否为垃圾邮件。

我们可以利用贝叶斯定理,根据邮件的特征(如主题或正文中的词汇)计算该邮件为垃圾邮件的概率。要实现这一点,首先需要估计模型的参数 —— 即垃圾邮件和非垃圾邮件的先验概率,以及每个特征在对应类别(垃圾邮件或非垃圾邮件)下的似然度。

这些概率可以通过最大似然估计或贝叶斯推断来求解。本实例将使用多项式朴素贝叶斯算法,这是朴素贝叶斯算法的一种变体,常用于文本分类任务。

示例代码

from sklearn.datasets import fetch_20newsgroups from sklearn.feature_extraction.text import CountVectorizer from sklearn.naive_bayes import MultinomialNB from sklearn.metrics import accuracy_score # 加载20个新闻组数据集 categories = ['alt.atheism', 'comp.graphics', 'sci.med', 'soc.religion.christian'] train = fetch_20newsgroups(subset='train', categories=categories, shuffle=True, random_state=42) test = fetch_20newsgroups(subset='test', categories=categories, shuffle=True, random_state=42) # 使用词袋模型表示文本数据 vectorizer = CountVectorizer() X_train = vectorizer.fit_transform(train.data) X_test = vectorizer.transform(test.data) # 训练多项式朴素贝叶斯分类器 clf = MultinomialNB() clf.fit(X_train, train.target) # 在测试集上进行预测并计算准确率 y_pred = clf.predict(X_test) accuracy = accuracy_score(test.target, y_pred) print("准确率:", accuracy)

代码说明

  1. 首先加载 20 个新闻组数据集,该数据集包含多个类别的新闻组帖子。我们选取了 4 个类别(无神论、计算机图形学、医学科学、基督教宗教),并将数据分为训练集和测试集。
  2. 使用 scikit-learn 库中的 CountVectorizer 类将文本数据转换为词袋模型表示。这种表示方式会统计文本中每个词汇的出现次数,并将其表示为向量形式。
  3. 调用 fit () 方法训练多项式朴素贝叶斯分类器,该方法通过最大似然估计求解先验概率和每个词汇在对应类别下的似然度。训练完成后,可使用 predict () 方法在测试集上进行预测。
  4. 最后利用 scikit-learn 库中的 accuracy_score () 函数计算分类器的准确率。

输出结果

运行上述代码后,将得到以下输出:准确率: 0.9340878828229028

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

2026必备!8个降AI率网站推荐,千笔AI助你轻松应对AIGC检测

AI降重工具:让论文更自然,让查重更轻松 在人工智能技术快速发展的今天,越来越多的学术写作开始依赖AI生成内容。然而,随之而来的AIGC检测问题也给学生和研究者带来了不小的挑战。如何在保持原意的基础上,有效降低AI痕…

作者头像 李华
网站建设 2026/4/25 17:34:45

如何判断AI智能降重写作软件的核心能力?

判断 AI 智能降重写作软件的核心能力,关键不在于功能多寡,而在于 “核心功能够硬、适配自身需求、无隐形风险”,结合学术写作的实际场景,可从以下 5 个核心维度精准判断,每一个维度都对应软件的核心价值,简…

作者头像 李华
网站建设 2026/4/18 9:18:35

如何利用二维码提升视频营销效果?

视频二维码营销是一种创新手段,能够显著提升视频传播效果。通过二维码,用户能够便捷地访问相关视频,提升观看体验。营销人员可以利用数据分析功能,追踪用户的行为和兴趣,精准了解观众的需求。这一工具的个性化设计&…

作者头像 李华
网站建设 2026/4/30 21:31:02

【开题答辩全过程】以 基于Java的家政服务系统为例,包含答辩的问题和答案

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

作者头像 李华
网站建设 2026/4/28 4:48:57

/usr/include/php/20230831/main/php.h的庖丁解牛

/usr/include/php/20230831/main/php.h 是 PHP 内核开发的核心头文件,它定义了 PHP 扩展(C 语言)与 Zend 引擎交互的底层接口。路径中的 20230831 是 PHP API 版本号,对应 PHP 8.3 的发布日期(2023-08-31)。…

作者头像 李华
网站建设 2026/4/22 13:37:34

sql语言之新建表与删除表

sql新建表的语法是 create table 表名 { 列名 数据类型, 列名 数据类型 } 比如新建一个新表,名为学生表,表中有id,姓名,年龄,联系方式等列名 代码如下 CREATE TABLE "学生表"( id integer primary …

作者头像 李华