17 贝叶斯分类之朴素贝叶斯分类器
系列进度
贝叶斯学习入门 · 第 17 / 24 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
贝叶斯学习的重点是把已有判断和新证据合在一起,并明确表达不确定性。阅读时可以按「朴素贝叶斯分类器的基础 -> 例子:文本分类 -> 实现朴素贝叶斯分类器 -> 先验」建立结构,再回到正文里的代码、案例或指标做验证。
读完后,用一个真实小任务复查:输入是什么,处理环节在哪里,输出是否可验收;失败时先查「朴素贝叶斯分类器的基础」,再查「例子:文本分类」。
在上一篇中,我们探讨了贝叶斯分类的基本理论,介绍了贝叶斯定理、先验概率、似然函数以及后验概率的定义和计算方法。今天,我们将进一步深入到具体的分类模型——朴素贝叶斯分类器。这一分类器是概率图模型中特别简单而又强大的模型,广泛应用于文本分类、垃圾邮件检测等问题。
朴素贝叶斯分类器的基础
朴素贝叶斯分类器基于贝叶斯定理,假设特征之间是条件独立的。这一假设简化了计算,使得我们可以使用简单的概率计算来进行分类,其基本公式为:
练习《贝叶斯分类之朴素贝叶斯分类器》时,建议把输入条件、处理动作和可见结果写在一起,方便下次复查。
复习《贝叶斯分类之朴素贝叶斯分类器》时,建议把关键概念、操作步骤和可见结果放在同一页里回看。
根据朴素假设,我们可以将条件概率分解为:
因此,我们可以将后验概率转化为:
在这个公式中, 是先验概率, 是似然概率,而 是常量项,通常可以忽略。
例子:文本分类
考虑一个文本分类的例子,我们要分类一组电子邮件为“垃圾邮件”和“非垃圾邮件”。我们可以通过以下步骤实现朴素贝叶斯分类器:
- 数据预处理:将邮件拆分为单词并建立词汇表。
- 特征提取:计算每个单词在“垃圾邮件”和“非垃圾邮件”中出现的概率。
- 建立模型:基于已计算的概率来进行分类。
数据收集与处理
假设我们有以下三封邮件:
- 邮件1:
"免费 赚取 现金" - 邮件2:
"重要 会议时间" - 邮件3:
"赚取 免费 现金 机会"
标签:
- 邮件1 : 垃圾邮件
- 邮件2 : 非垃圾邮件
- 邮件3 : 垃圾邮件
构建词汇表:["免费", "赚取", "现金", "重要", "会议", "时间", "机会"]
计算概率
接下来,我们计算每个单词在两类邮件中出现的概率。
-
先验概率:
-
似然概率: 假设我们使用拉普拉斯平滑(避免零概率问题),我们计算每个单词在两类中的条件概率。
以单词 "免费" 为例:
- 在垃圾邮件中出现:2次
- 在非垃圾邮件中出现:0次
- 词汇表大小:7
所以单词 "免费" 的概率为:
同样可以计算其他单词的概率。
实现朴素贝叶斯分类器
我们可以使用Python的sklearn库来实现一个朴素贝叶斯分类器。以下是一个例子:
学习朴素贝叶斯分类器时,先看类别先验、词或特征似然、平滑方法、后验比较和独立性假设的局限。
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import make_pipeline
# 训练集
emails = [
"免费 赚取 现金",
"重要 会议时间",
"赚取 免费 现金 机会"
]
labels = ["垃圾邮件", "非垃圾邮件", "垃圾邮件"]
# 创建模型
model = make_pipeline(CountVectorizer(), MultinomialNB())
# 训练模型
model.fit(emails, labels)
# 测试邮件
test_email = ["重要 现金 机会"]
print(model.predict(test_email)) # 预测结果
总结
在本篇教程中,我们介绍了朴素贝叶斯分类器的基本概念及其工作原理,并通过一个文本分类的例子演示了如何实现这一分类器。在实践中,朴素贝叶斯分类器因其简单高效而被广泛应用。
进入《贝叶斯分类之朴素贝叶斯分类器》正文前,可以先扫一遍配图:它在问什么、要分清哪些概念、哪一步值得动手、最后用什么标准验收。
接下来,我们将探讨如何对构建的模型进行评估与改进,以保证模型的准确性与高效性。
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
贝叶斯分类之朴素贝叶斯分类器适合谁读?
这是 贝叶斯学习入门 系列第 17 / 24 篇,适合正在学习贝叶斯学习入门,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇贝叶斯学习入门教程要多久?
按中文技术文章阅读速度估算,通读大约 4 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读