机器学习之朴素贝叶斯

本文围绕朴素贝叶斯展开,介绍其是用于分类的生成模型,利用特征条件独立假设学习联合概率分布。阐述了先验、后验、条件概率等基本概念,给出分类器公式。还提及sklearn中的应用,分析其优缺点,以及处理连续值特征和未同时出现特征与标签值的方法。

朴素贝叶斯简述

朴素贝叶斯用于分类,是一种生成模型。它利用特征条件独立假设学习联合概率分布,再通过贝叶斯定理求后验概率最大的输出。

基本概念
  1. 先验概率、后验概率、条件概率
    先验概率也叫事前概率,也就是没有新数据进来计算的事件的概率。而后验概率理所当然是新信息加入后更新的概率。后验概率是事件A在事件B发生前提下发生的概率。A在朴素贝叶斯中表示特征,B表示标签。至于条件概率,后验概率就是一种条件概率,某某事情发生的前提下另一件事情发生的概率。
  2. 联合概率分布
    联合概率分布是指两个及以上变量组成的随机变量的分布。
  3. 贝叶斯定理
    贝叶斯定理是根据先验概率求后验概率的公式
    P ( B i ∣ A ) = P ( B i ) P ( A ∣ B i ) ∑ j = 1 n P ( B j ) P ( A ∣ B j ) P\left( {{B_i}|A} \right) = \frac{{P\left( {{B_i}} \right)P\left( {A|{B_i}} \right)}}{{\sum\nolimits_{j = 1}^n {P\left( {{B_j}} \right)P\left( {A|{B_j}} \right)} }} P(BiA)=j=1nP(Bj)P(ABj)P(Bi)P(ABi)
  4. 条件独立假设
    P ( X = x ∣ Y = c k ) = P ( X ( 1 ) = x ( 1 ) , . . . , X ( n ) = x ( n ) ∣ Y = c k ) = ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) P\left( {X = x|Y = {c_k}} \right) = P\left( {{X^{\left( 1 \right)}} = {x^{\left( 1 \right)}},...,{X^{\left( n \right)}} = {x^{\left( n \right)}}|Y = {c_k}} \right) = \prod\limits_{j = 1}^n {P\left( {{X^{\left( j \right)}} = {x^{\left( j \right)}}|Y = {c_k}} \right)} P(X=xY=ck)=P(X(1)=x(1),...,X(n)=x(n)Y=ck)=j=1nP(X(j)=x(j)Y=ck)
朴素贝叶斯分类器

根据先验概率和条件独立假设以及贝叶斯定理可以得到贝叶斯分类器:
y = a r g m a x c k P ( Y = c k ) ∏ j P ( X ( j ) = x ( j ) ∣ Y = c k ) y = \mathop {argmax}\limits_{{c_k}} P\left( {Y = {c_k}} \right)\prod\nolimits_j {P\left( {{X^{\left( j \right)}} = {x^{\left( j \right)}}|Y = {c_k}} \right)} y=ckargmaxP(Y=ck)jP(X(j)=x(j)Y=ck)

sklearn中的朴素贝叶斯
'''
	sklearn中有三个不同的朴素贝叶斯算法:
	GaussianNB——适合特征大部分是连续值
	MultinominalNB——适合特征大部分是多元离散值
	BernoulliNB——适合特征是二元离散值或者稀疏的多元离散值
'''
from sklearn.naive_bayes import GaussianNB
#GaussianNB的参数特别少,基本上不必设置
clf= GaussianNB()
clf.fit(data,label)
朴素贝叶斯面试
  1. 朴素贝叶斯优缺点
    优点:
          小规模数据表现很好;可以批量训练;算法简单,经常用于NLP;对缺失值不敏感
    缺点:
         条件独立性假设不容易满足;对数据格式很敏感
  2. 朴素贝叶斯是如何处理连续值特征的
    如果特征是连续值,可以假设特征服从某种概率分布,然后估计参数。
  3. 测试集里面某个特征的取值和它的标签值没有在训练集中同时出现过怎么办
    没有同时出现在训练集中不表示它不会发生,因此需要使用拉普拉斯平滑,在随机变量各个取值的频数上赋予一个正数 λ \lambda λ
【博士论文复现】【阻抗建模、验证扫频法】光伏并网逆变器扫频与稳定性分析(包含锁相环电流环)(Simulink仿真实现)内容概要:本文档围绕“博士论文复现”主题,重点介绍了光伏并网逆变器的阻抗建模与扫频法稳定性分析,涵盖锁相环和电流环的Simulink仿真实现。文档旨在通过完整的仿真资源和代码帮助科研人员复现相关技术细节,提升对新能源并网系统动态特性和稳定机制的理解。此外,文档还提供了大量其他科研方向的复现资源,包括微电网优化、机器学习、路径规划、信号处理、电力系统分析等,配套MATLAB/Simulink代码与模型,服务于多领域科研需求。; 适合人群:具备一定电力电子、自动控制或新能源背景的研究生、博士生及科研人员,熟悉MATLAB/Simulink环境,有志于复现高水平论文成果并开展创新研究。; 使用场景及目标:①复现光伏并网逆变器的阻抗建模与扫频分析过程,掌握其稳定性判据与仿真方法;②借鉴提供的丰富案例资源,支撑博士论文或期刊论文的仿真实验部分;③结合团队提供的算法与模型,快速搭建实验平台,提升科研效率。; 阅读建议:建议按文档目录顺序浏览,优先下载并运行配套仿真文件,结合理论学习与代码调试加深理解;重点关注锁相环与电流环的建模细节,同时可拓展学习其他复现案例以拓宽研究视野。
内容概要:本文系统解析了嵌入式通信协议栈系列项目的实践路径,围绕通信原理与工程实现,阐述在资源受限的嵌入式环境中构建稳定、可扩展通信能力的方法。文章从通信基础模型出发,强调分层设计思想,涵盖物理层到应用层的职责划分,并依次讲解通信驱动、数据收发机制、帧格式解析、状态机控制、错误处理等核心技术环节。项目实践注重底层可靠性建设,如中断响应、缓冲区管理与数据校验,同时关注上层应用对接,确保协议栈支持设备配置、状态上报等实际业务。文中还突出性能优化与资源管理的重要性,指导开发者在内存与处理效率间取得平衡,并通过系统化测试手段(如异常模拟、压力测试)验证协议栈的健壮性。; 适合人群:具备嵌入式系统基础知识,有一定C语言和硬件接口开发经验,从事或希望深入物联网、工业控制等领域1-3年工作经验的工程师。; 使用场景及目标:①掌握嵌入式环境下通信协议栈的分层架构设计与实现方法;②理解状态机、数据封装、异常处理等关键技术在真实项目中的应用;③提升在资源受限条件下优化通信性能与稳定性的工程能力; 阅读建议:建议结合实际嵌入式平台动手实践,边学边调,重点关注各层接口定义与模块解耦设计,配合调试工具深入分析通信流程与异常行为,以全面提升系统级开发素养。
### 朴素贝叶斯分类器理论 朴素贝叶斯分类器是一种基于贝叶斯定理的概率分类方法,假设特征之间相互独立。这一算法简单高效,在许多实际场景中表现出色[^1]。 #### 贝叶斯定理基础 贝叶斯定理描述了已知某些条件下事件发生的概率如何随着新证据的引入而更新。具体表达式如下: \[ P(A|B) = \frac{P(B | A)\, P(A)}{P(B)} \] 其中 \( P(A|B) \) 表示在观察到 B 的情况下 A 发生的概率;\( P(B|A) \) 是给定 A 条件下发生 B 的可能性;\( P(A) \) 和 \( P(B) \) 则分别是各自单独发生的先验概率。 对于多维数据集而言,当考虑多个属性时,可以扩展上述公式来计算联合条件概率: \[ P(C_k|x_1,\dots,x_n)=\frac{\prod_{i=1}^{n}{P(x_i|C_k)}}{Z}\cdot P(C_k) \] 这里 \( C_k \) 表示类别 k ,\( Z \) 是归一化因子以确保所有类别的总和等于 1 。由于分母相同,因此通常只比较分子部分即可得出最大似然估计的结果。 ```python from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.naive_bayes import GaussianNB # 加载鸢尾花数据集并分割训练测试集合 X, y = load_iris(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0) # 创建高斯分布下的朴素贝叶斯模型实例 gnb = GaussianNB() # 使用训练集拟合模型参数 gnb.fit(X_train, y_train) # 对未知样本进行预测 y_pred = gnb.predict(X_test) print(f"Number of mislabeled points out of a total {X_test.shape[0]} points : {(y_test != y_pred).sum()}") ``` 此代码片段展示了如何利用 Scikit-Learn 库实现一个简单的朴素贝叶斯分类任务,并评估其性能表现。 ### 实际应用场景 自动文档分类是一个重要的机器学习应用领域之一,通过分析文本内容将其分配至预定义的主题或标签之下。朴素贝叶斯因其快速收敛性和良好泛化能力成为此类问题的理想解决方案。 然而值得注意的是,尽管该技术具有诸多优点,但在面对高度复杂的现实世界挑战时仍可能存在局限性。例如,如果输入变量并非完全统计独立,则可能导致偏差增加从而影响最终决策质量[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值