朴素贝叶斯的原理以及代码

本文介绍了朴素贝叶斯法的基本原理,包括贝叶斯定理、条件独立假设,以及如何通过极大似然估计和贝叶斯估计来求解先验概率和条件概率。文章还详细阐述了模型的构建、分类策略,并提供了简单的算法概述。在求解概率的不同方法中,讨论了避免概率为0的问题。最后,文章提及了朴素贝叶斯分类器的代码实现,尽管代码简单,但足以展示核心思想。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

朴素贝叶斯法(naive bayses)是基于贝叶斯定理条件独立假设的分类方法,属于生成模型。
贝叶斯定理:在这里插入图片描述
条件独立假设:用于分类的特征在类确定的条件下都是条件独立的(作用是简化运算)。

一. 模型

通过训练集学习联合概率分布P(X,Y)。不过在此之前需要先学习先验概率和条件概率分布。

  1. 先计算P(Y=c_k)这个先验概率分布:在这里插入图片描述
  2. 根据条件独立性假设计算P(X=x|Y=c_k)这个条件概率分布:在这里插入图片描述

在已知上面两个公式以后,我们模型训练完成。当输入一个X以后,我们可以求在这个X条件下,取得特定Y的概率。计算给定数据条件下模型的条件概率是叫做后验概率。
根据贝叶斯定理求后验概率:
在这里插入图片描述
代入,变形:在这里插入图片描述
由于不管Y=c_k怎么取,分母都一样,所以可以去掉比较。这时我们要取使P(Y=c_k)概率最大时的Y=c_k:
在这里插入图片描述

二. 策略

为什么要取后验概率最大的类作为输入X的类呢?
首先我们已知策略是选择期望风险最小的模型。假设我们的损失函数是0-1损失函数:在这里插入图片描述
期望风险函数:在这里插入图片描述
我们不知道联合分布P(X,Y),而且X,Y是离散型的,所以在给定X,不同Y取值时的条件期望:在这里插入图片描述

参考什么是条件期望:
https://baike.baidu.com/item/%E6%9D%A1%E4%BB%B6%E6%9C%9F%E6%9C%9B/3066519?fr=aladdin

我们要让期望风险最小,最后就是后验概率最大的时候:【注意:L(c_k,y)=0,当y=c_k时】在这里插入图片描述
这就是朴素贝叶斯采取的策略。

三. 算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总的来说:先算Y的先验概率,再算Y不同条件下不同X的不同特征的条件概率,最后给定X下计算后验概率,比较Y=c_k哪个大取哪个。(看统计学习方法书上的例题特别好懂)

四. 求先验概率和条件概率的不同方法

极大似然估计
  1. 先验概率:数总数下Y=c_k的个数在这里插入图片描述
  2. 条件概率:数条件Y下不同X的不同特征的个数:在这里插入图片描述

但是极大似然估计可能出现所要估计的概率值为0的情况。就是说某个X的特征有但是为0次数,他会影响之后的后验概率,应为是乘法。所以我们才有贝叶斯估计。

贝叶斯估计
  1. 先验概率:K表示Y的类别个数在这里插入图片描述

  2. 条件概率:其中λ≥0,等于0就是极大似然估计。S_j表示X特征的个数。在这里插入图片描述

代码

代码写的很low,如果善用numpy很多地方都可以简写

import numpy as np


def cal_Priori_Probability(train, N, demo, x_sum):
    y = {
   
   }
    y_class = list(set(train[:, x_sum:demo].flatten()))  # 截取y并且获得y的类别
    y_class_sum = list(np.zeros(len(y_class)))
    # 数y的不同类别
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值