news 2026/4/18 9:56:48

人工智能之核心基础 机器学习 第六章 朴素贝叶斯

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
人工智能之核心基础 机器学习 第六章 朴素贝叶斯

人工智能之核心基础 机器学习

第六章 朴素贝叶斯


文章目录

  • 人工智能之核心基础 机器学习
    • 6.1 贝叶斯定理基础
      • 📌 核心公式:用已知反推未知
      • 💡 举个生活例子:疾病检测
    • 6.2 朴素贝叶斯的“朴素”假设
      • 🔑 核心假设:**特征条件独立**
    • 6.3 常见朴素贝叶斯模型
      • 📊 举例说明
    • 6.4 朴素贝叶斯的优缺点与适用场景
      • ✅ 优点
      • ❌ 缺点
      • 🎯 最佳适用场景
    • 6.5 实战案例 + 代码实现
      • 案例1:垃圾邮件过滤(多项式NB)
      • 案例2:电影评论情感分析(正面/负面)
      • 案例3:高斯NB —— 鸢尾花分类(连续特征)
    • 🎯 本章总结
  • 资料关注

6.1 贝叶斯定理基础

📌 核心公式:用已知反推未知

贝叶斯定理告诉我们:
在看到某些证据后,如何更新对某件事发生的信念(概率)

公式如下:

P ( Y ∣ X ) = P ( X ∣ Y ) ⋅ P ( Y ) P ( X ) P(Y|X) = \frac{P(X|Y) \cdot P(Y)}{P(X)}P(YX)=P(X)P(XY)P(Y)

  • P ( Y ∣ X ) P(Y|X)P(YX)后验概率—— 看到数据X XX后,类别Y YY的概率(我们要预测的!)
  • P ( X ∣ Y ) P(X|Y)P(XY)似然—— 如果是类别Y YY,出现数据X XX的可能性
  • P ( Y ) P(Y)P(Y)先验概率—— 类别Y YY本身出现的频率(比如垃圾邮件占30%)
  • P ( X ) P(X)P(X)证据—— 数据X XX出现的总概率(对所有类别都一样,可忽略)

目标:对每个类别Y YY计算P ( Y ∣ X ) P(Y|X)P(YX),选概率最大的那个!


💡 举个生活例子:疾病检测

  • 先验:人群中得病概率P ( 病 ) = 1 % P(\text{病}) = 1\%P()=1%
  • 检测准确率:得病者检出阳性P ( 阳 ∣ 病 ) = 99 % P(\text{阳}|\text{病}) = 99\%P()=99%
  • 假阳性率:健康人误检P ( 阳 ∣ 健康 ) = 5 % P(\text{阳}|\text{健康}) = 5\%P(健康)=5%

问:你检测阳性,真得病的概率是多少?

用贝叶斯:

P ( 病 ∣ 阳 ) = 0.99 × 0.01 0.99 × 0.01 + 0.05 × 0.99 ≈ 16.7 % P(\text{病}|\text{阳}) = \frac{0.99 \times 0.01}{0.99 \times 0.01 + 0.05 \times 0.99} \approx 16.7\%P()=0.99×0.01+0.05×0.990.99×0.0116.7%

👉 即使检测阳性,真实得病概率也不高!这就是先验的重要性。


6.2 朴素贝叶斯的“朴素”假设

🔑 核心假设:特征条件独立

给定类别Y YY,所有特征x 1 , x 2 , . . . , x n x_1, x_2, ..., x_nx1,x2,...,xn相互独立

即:

P ( X ∣ Y ) = P ( x 1 , x 2 , . . . , x n ∣ Y ) = P ( x 1 ∣ Y ) ⋅ P ( x 2 ∣ Y ) ⋅ . . . ⋅ P ( x n ∣ Y ) P(X|Y) = P(x_1, x_2, ..., x_n | Y) = P(x_1|Y) \cdot P(x_2|Y) \cdot ... \cdot P(x_n|Y)P(XY)=P(x1,x2,...,xnY)=P(x1Y)P(x2Y)...P(xnY)

❗ 这个假设在现实中几乎不成立(比如“免费”和“赢钱”在垃圾邮件中常一起出现)
但神奇的是——即使假设错误,朴素贝叶斯依然效果很好!

为什么能work?

  • 分类只需比较相对大小,不需要精确概率
  • 对噪声和无关特征鲁棒
  • 训练快、参数少,不易过拟合

6.3 常见朴素贝叶斯模型

根据特征类型不同,选择不同概率分布:

模型特征类型概率分布典型场景
高斯朴素贝叶斯连续数值假设特征服从正态分布身高、体重、温度等连续值
多项式朴素贝叶斯离散计数特征为词频/次数文本分类(TF、TF-IDF)
伯努利朴素贝叶斯二值特征特征为0/1(是否出现)短文本、关键词存在性

📊 举例说明

  • 邮件内容:“免费 免费 赢钱”
    • 多项式NB:统计词频 → “免费”:2, “赢钱”:1
    • 伯努利NB:只看是否出现 → “免费”:1, “赢钱”:1

📌文本分类首选:多项式NB(保留词频信息)


6.4 朴素贝叶斯的优缺点与适用场景

✅ 优点

优势说明
训练极快只需统计频率,无需迭代
内存占用小存储每个特征的分布参数
对小样本有效即使数据少也能工作
天然支持多分类直接计算所有类别概率
对噪声鲁棒无关特征影响小

❌ 缺点

劣势说明
独立性假设太强实际特征常相关
无法捕捉特征交互比如“不+好” ≠ “不好”
概率估计不准输出概率不可靠(但排序可用)
零概率问题某词在训练集中未出现 → 概率为0 → 整体为0

🔧解决零概率拉普拉斯平滑(Laplace Smoothing)
给每个计数加1,避免0概率


🎯 最佳适用场景

  • 文本分类(垃圾邮件、情感分析、新闻分类)
  • 实时预测(因推理速度极快)
  • 高维稀疏数据(如词袋模型)
  • ❌ 不适合:需要精确概率、特征高度相关、连续特征非高斯分布

💡行业事实
尽管深度学习流行,朴素贝叶斯仍是工业界文本分类的baseline首选


6.5 实战案例 + 代码实现

案例1:垃圾邮件过滤(多项式NB)

fromsklearn.datasetsimportfetch_20newsgroupsfromsklearn.feature_extraction.textimportCountVectorizer,TfidfTransformerfromsklearn.naive_bayesimportMultinomialNBfromsklearn.pipelineimportPipelinefromsklearn.metricsimportclassification_report# 构造垃圾邮件 vs 正常邮件数据(简化版)emails=["Free money now!!!","Win a million dollars!","Hey, how are you?","Meeting tomorrow at 3pm","Claim your prize today!","Can we reschedule the call?"]labels=[1,1,0,0,1,0]# 1=垃圾, 0=正常# 创建管道:词袋 → TF-IDF → 多项式NBtext_clf=Pipeline([('vect',CountVectorizer()),# 生成词频('tfidf',TfidfTransformer()),# 转TF-IDF('clf',MultinomialNB(alpha=1.0))# alpha=拉普拉斯平滑参数])# 训练text_clf.fit(emails,labels)# 预测新邮件new_emails=["Congratulations! You won free cash!","Let's have lunch"]preds=text_clf.predict(new_emails)foremail,predinzip(new_emails,preds):print(f"'{email}' →{'垃圾邮件'ifpred==1else'正常邮件'}")

输出:

'Congratulations! You won free cash!' → 垃圾邮件 'Let's have lunch' → 正常邮件

案例2:电影评论情感分析(正面/负面)

fromsklearn.feature_extraction.textimportTfidfVectorizerfromsklearn.naive_bayesimportMultinomialNBfromsklearn.model_selectionimporttrain_test_splitfromsklearn.metricsimportaccuracy_score# 模拟数据reviews=["This movie is amazing!","I love the acting","Terrible film, waste of time","Boring and slow","Great story and visuals","Awful dialogue"]sentiments=[1,1,0,0,1,0]# 1=正面, 0=负面# 划分数据X_train,X_test,y_train,y_test=train_test_split(reviews,sentiments,test_size=0.3,random_state=42)# 向量化 + 训练vectorizer=TfidfVectorizer()X_train_vec=vectorizer.fit_transform(X_train)X_test_vec=vectorizer.transform(X_test)nb=MultinomialNB(alpha=0.5)nb.fit(X_train_vec,y_train)# 评估y_pred=nb.predict(X_test_vec)print("准确率:",accuracy_score(y_test,y_pred))# 查看预测概率proba=nb.predict_proba(X_test_vec)fori,textinenumerate(X_test):print(f"'{text}' → 正面概率:{proba[i][1]:.2f}")

案例3:高斯NB —— 鸢尾花分类(连续特征)

fromsklearn.naive_bayesimportGaussianNBfromsklearn.datasetsimportload_irisfromsklearn.model_selectionimporttrain_test_split X,y=load_iris(return_X_y=True)X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=42)gnb=GaussianNB()gnb.fit(X_train,y_train)print("准确率:",gnb.score(X_test,y_test))

🎯 本章总结

  • 朴素贝叶斯 = 贝叶斯定理 + 特征独立假设
  • 文本分类用多项式NB,连续数据用高斯NB
  • 训练快、内存小、对小数据友好
  • 虽“朴素”,但在文本任务中常胜!

💡建议
下次做文本分类项目,先跑一个朴素贝叶斯作为baseline
它可能比你想象的更强,而且几行代码就能搞定!


资料关注

公众号:咚咚王
gitee:https://gitee.com/wy18585051844/ai_learning

《Python编程:从入门到实践》
《利用Python进行数据分析》
《算法导论中文第三版》
《概率论与数理统计(第四版) (盛骤) 》
《程序员的数学》
《线性代数应该这样学第3版》
《微积分和数学分析引论》
《(西瓜书)周志华-机器学习》
《TensorFlow机器学习实战指南》
《Sklearn与TensorFlow机器学习实用指南》
《模式识别(第四版)》
《深度学习 deep learning》伊恩·古德费洛著 花书
《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》
《深入浅出神经网络与深度学习+(迈克尔·尼尔森(Michael+Nielsen)》
《自然语言处理综论 第2版》
《Natural-Language-Processing-with-PyTorch》
《计算机视觉-算法与应用(中文版)》
《Learning OpenCV 4》
《AIGC:智能创作时代》杜雨+&+张孜铭
《AIGC原理与实践:零基础学大语言模型、扩散模型和多模态模型》
《从零构建大语言模型(中文版)》
《实战AI大模型》
《AI 3.0》

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

3分钟快速搭建个人电子书管理平台:Docker部署终极指南

3分钟快速搭建个人电子书管理平台:Docker部署终极指南 【免费下载链接】docker-calibre-web 项目地址: https://gitcode.com/gh_mirrors/do/docker-calibre-web 想要在任何设备上轻松管理个人电子书库吗?通过Docker部署Calibre-Web电子书管理平台…

作者头像 李华
网站建设 2026/4/13 18:53:48

KAT-Dev-32B开源:62.4%解决率登顶开源编程AI前五

导语:Kwaipilot团队正式发布开源编程大模型KAT-Dev-32B,在SWE-Bench Verified基准测试中实现62.4%的问题解决率,跻身全球开源编程模型前五,为开发者社区带来又一高性能选择。 【免费下载链接】KAT-Dev 项目地址: https://ai.gi…

作者头像 李华
网站建设 2026/4/5 19:40:16

Realtek 8852AE Wi-Fi 6驱动完整安装与优化配置教程

Realtek 8852AE Wi-Fi 6驱动完整安装与优化配置教程 【免费下载链接】rtw89 Driver for Realtek 8852AE, an 802.11ax device 项目地址: https://gitcode.com/gh_mirrors/rt/rtw89 想要在Linux系统上充分发挥Realtek 8852AE Wi-Fi 6网卡的性能?这款开源驱动能…

作者头像 李华
网站建设 2026/4/18 6:31:20

FluidX3D优化配置指南:5个核心参数让流体模拟效率翻倍

FluidX3D优化配置指南:5个核心参数让流体模拟效率翻倍 【免费下载链接】FluidX3D The fastest and most memory efficient lattice Boltzmann CFD software, running on all GPUs via OpenCL. 项目地址: https://gitcode.com/gh_mirrors/fl/FluidX3D FluidX3…

作者头像 李华
网站建设 2026/4/17 16:20:05

Silk音频格式转换工具全方位使用指南

Silk音频格式转换工具全方位使用指南 【免费下载链接】silk-v3-decoder [Skype Silk Codec SDK]Decode silk v3 audio files (like wechat amr, aud files, qq slk files) and convert to other format (like mp3). Batch conversion support. 项目地址: https://gitcode.com…

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

IndexTTS2语音合成实战:精通情感可控AI语音生成技术

IndexTTS2语音合成实战:精通情感可控AI语音生成技术 【免费下载链接】index-tts An Industrial-Level Controllable and Efficient Zero-Shot Text-To-Speech System 项目地址: https://gitcode.com/gh_mirrors/in/index-tts 还在为传统语音合成系统的情感表…

作者头像 李华