【第二章:机器学习与神经网络概述】03.类算法理论与实践-(2)朴素贝叶斯分类器

第二章: 机器学习与神经网络概述

第三部分:类算法理论与实践

第二节:朴素贝叶斯分类器

内容:条件独立假设、拉普拉斯平滑、分类准确率。

朴素贝叶斯是一类基于贝叶斯定理 且假设特征之间相互独立的概率分类模型,广泛应用于文本分类、垃圾邮件过滤、情感分析等任务中。


一、贝叶斯定理基础回顾

贝叶斯定理描述了在已知先验概率和条件概率下,如何更新后验概率:

  • P(C∣X):在给定特征 X 的情况下属于类别 C 的概率(后验概率)

  • P(C):类别的先验概率

  • P(X∣C):类别 C 下出现特征 X 的概率

  • P(X):所有类别下特征 X 的总概率(可忽略用于比较)


二、朴素假设:特征条件独立

朴素贝叶斯对贝叶斯定理进行了简化,假设特征之间相互独立,因此:

于是:

这大大简化了模型训练与推理过程。


三、模型训练与预测流程
  1. 统计先验概率 P(C):每个类别出现的频率

  2. 统计条件概率 :特征在每个类别中出现的频率

  3. 应用拉普拉斯平滑(见下)防止零概率问题

  4. 预测时计算各类别后验概率,选择概率最大的类别作为结果


四、拉普拉斯平滑(Laplacian Smoothing)

当某些特征在某类中未出现时,,使整体概率为零。

解决方法是对所有概率加一个正数(通常是1):

其中 k 是特征总数(对于多项式模型,k 为词汇表大小)。


五、朴素贝叶斯常见变体
模型类型 适用数据类型 条件概率分布
高斯贝叶斯 连续型数据 高斯正态分布
多项式贝叶斯 计数型特征(如词频) 多项式分布
伯努利贝叶斯 二元特征(如是否出现) 伯努利分布

六、Python 示例(使用 sklearn)
python 复制代码
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.model_selection import train_test_split

# 示例数据
texts = ["good product", "very bad", "excellent service", "worst experience", "nice quality"]
labels = [1, 0, 1, 0, 1]  # 1=好评, 0=差评

# 文本向量化
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(texts)

# 训练模型
X_train, X_test, y_train, y_test = train_test_split(X, labels, test_size=0.2)
model = MultinomialNB()
model.fit(X_train, y_train)

# 测试准确率
accuracy = model.score(X_test, y_test)
print(f"测试准确率: {accuracy:.2f}")
python 复制代码
测试准确率: 0.00

七、评价指标
  • 准确率(Accuracy):预测正确的样本数 / 总样本数

  • 精确率(Precision)、召回率(Recall)、F1-score:在不均衡样本中更常用

  • 混淆矩阵:展示预测与真实类别的分布情况


八、优点与局限
优点 说明
计算效率高 适用于大规模数据
简单易实现 理解与部署容易
可解释性强 输出为概率,可量化信心度
局限 说明
特征独立假设不现实 实际数据特征常常相关
对连续变量建模能力弱 需假设高斯分布或离散化
相关推荐
Polaris北极星少女9 分钟前
TRSV优化2
算法
九河云42 分钟前
5秒开服,你的应用部署还卡在“加载中”吗?
大数据·人工智能·安全·机器学习·华为云
代码游侠1 小时前
C语言核心概念复习——网络协议与TCP/IP
linux·运维·服务器·网络·算法
2301_763472461 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法
abluckyboy2 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法
园小异2 小时前
2026年技术面试完全指南:从算法到系统设计的实战突破
算法·面试·职场和发展
m0_706653232 小时前
分布式系统安全通信
开发语言·c++·算法
pp起床3 小时前
Gen_AI 补充内容 Logit Lens 和 Patchscopes
人工智能·深度学习·机器学习
天天爱吃肉82183 小时前
跟着创意天才周杰伦学新能源汽车研发测试!3年从工程师到领域专家的成长秘籍!
数据库·python·算法·分类·汽车
alphaTao3 小时前
LeetCode 每日一题 2026/2/2-2026/2/8
算法·leetcode