news 2026/4/16 11:12:40

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

作者头像

张小明

前端开发工程师

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/16 10:57:16

跨设备音频同步终极指南:如何实现Windows到安卓的无线传输

跨设备音频同步终极指南:如何实现Windows到安卓的无线传输 【免费下载链接】AudioShare 将Windows的音频在其他Android设备上实时播放。Share windows audio 项目地址: https://gitcode.com/gh_mirrors/audi/AudioShare 传统音频连接方案存在明显的局限性&am…

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

Android WebDAV云存储桥接:重新定义移动文件管理体验

Android WebDAV云存储桥接:重新定义移动文件管理体验 【免费下载链接】webdav-provider An Android app that can expose WebDAV storage to other apps through Androids Storage Access Framework (SAF) 项目地址: https://gitcode.com/gh_mirrors/we/webdav-pr…

作者头像 李华
网站建设 2026/4/16 12:28:58

VR-Reversal完整指南:3D转2D视频转换的终极解决方案

VR-Reversal是一款革命性的开源工具,专为将3D视频转换为2D格式而设计。无论你是想要在普通屏幕上观看VR内容,还是需要保存特定视角的视频片段,这款工具都能提供专业级的解决方案。通过简单的鼠标和键盘操作,你就能自由探索视频的每…

作者头像 李华
网站建设 2026/4/16 14:04:16

OpenRGB完整指南:跨平台统一控制所有RGB设备的终极方案

OpenRGB完整指南:跨平台统一控制所有RGB设备的终极方案 【免费下载链接】OpenRGB Open source RGB lighting control that doesnt depend on manufacturer software. Supports Windows, Linux, MacOS. Mirror of https://gitlab.com/CalcProgrammer1/OpenRGB. Relea…

作者头像 李华
网站建设 2026/4/16 12:27:54

为什么PyNifly是游戏模组开发者的秘密武器?

为什么PyNifly是游戏模组开发者的秘密武器? 【免费下载链接】PyNifly Export/Import tools between Blender and the Nif format, using Bodyslide/Outfit Studios Nifly layer. Supports Skyrim LE, Skyrim SE, Fallout 4, Fallout New Vegas, Fallout 76, and Fal…

作者头像 李华
网站建设 2026/4/16 12:13:32

git commit --edit重新编辑IndexTTS2提交信息

Git 与 AI 模型开发中的提交信息管理:以 IndexTTS2 为例 在现代 AI 系统的开发实践中,代码不仅仅是功能实现的载体,更是一份动态演进的技术日志。尤其对于像 IndexTTS2 这样持续迭代的中文语音合成项目而言,每一次提交都可能关联…

作者头像 李华