伯努利贝叶斯分类算法

article/2025/8/25 14:37:01

贝叶斯分类的核心概念:

我们对某件事情的判断首先有一个概率,这个概率称为先验概率。先验概率时根据经验总结出来的概率值,如果首先没有经验,那么可以将先验概率设置为50%,随着后面事情的发展,再调整先验概率,得到调整后的概率,这个调整后的概率称为后验概率,使用调整后的后验概率来替换先验祸率,则是对这件事情的新认知,这就是贝叶斯分类的基本思想。
贝叶斯分类是一类分类算法的总称,它包括了高斯贝叶斯分类算法、伯努利贝叶斯分类算法以及多项式贝叶新分类算法。这类算法以贝叶斯定理为基础,故统称为贝叶斯分类。

下面介绍伯努利贝叶斯算法

伯努利贝叶斯分类算法:
在日常生活及工作中,有非常多的特征变量是符合伯努利分布的,例如扔硬币,其得到男性结果不是正面就是反面;又如性别,不是男性就是女性。

伯努利分布(Bernoulli Distribution):
归努利分布又称为二项分布,它是一种离散分布,有两种互斥的结果,分布规律如下:

P = { 1 − p , n = 0 p , n = 1 P = \begin{cases} 1-p, & n=0\\ p, & n = 1 \end{cases} P={1p,p,n=0n=1
n = 1 表示成功,出现的概率为p。
n = 0 表示失败,出现的概率为1-p。

当特征变量的数据类型是0或1 这种二值化特征值的时候,就适合使用伯努利贝叶斯分类算法。在日常工作中,因为 sklearn只支持连续型数据的计算,所以我们需要通过独热编码,把离散型的特征转换为二值化的特征。

独热编码(One Hot Encoding ):
独热编码的过程很简单,例如有两列特征变量,分别为性别和颜色。独热编码先把这两列数据去重,然后将它们编码,得到编码后的序列值。之后按照编码的位置,指定转换规则表,最后根据转换规则表,把数据转换为独热编码。

示例数据:
在这里插入图片描述

import pandas as pd 
from sklearn.preprocessing import OneHotEncoder
#导入数据
data = pd.read_csv(
'D:\example_csv\LabelEncoder.csv',
encoding = 'ANSI')onehotencoder = OneHotEncoder()
#新建独热编码器
onehotencoder.fit(data)
#训练独热编码器,得到转换规则
onehotData = onehotencoder.transform(data)
#转换数据
onehotData.toarray()

转化数据为:
在这里插入图片描述
因为独热编码后,样本的特征数量会变得异常庞大,所以一般采用简单的数据集。

伯努利贝叶斯算法实现:
示例数据:
在这里插入图片描述
这里,第三列,第四列一直到最后一列都是特征,第二列Party是预测数据。

import pandas as pd 
data = pd.read_csv(
'D:\example_csv\议案投票.csv')
data = data.fillna('none')
#填充缺失值,把所有空缺列填充为字符串None

特征变量:

features = ['Campaign Finance Overhaul','Campaign Finance Overhaul',	'Campaign Finance Overhaul',	'Campaign Finance Overhaul',	'Campaign Finance Overhaul','Campaign Finance Overhaul',	'Campaign Finance Overhaul',	'Campaign Finance Overhaul',	'Campaign Finance Overhaul',	'Campaign Finance Overhaul',	'Campaign Finance Overhaul',	'Campaign Finance Overhaul',	'Campaign Finance Overhaul',	'Campaign Finance Overhaul',	'Campaign Finance Overhaul',	'Campaign Finance Overhaul',	'Campaign Finance Overhaul',	'Campaign Finance Overhaul',	'Campaign Finance Overhaul',	'Campaign Finance Overhaul'
]

使用sklearn:

from sklearn.preprocessing import OneHotEncoder
from sklearn.naive_bayes import BernoulliNB
from sklearn.model_selection import cross_val_scoreoneHotEncoder = OneHotEncoder()
#新建独热编辑器
oneHotEncoder.fit(data[features])
#训练独热编辑器,得到转换规则
oneHotData = oneHotEncoder.transform(data[features])
#转换数据
BNBmodel = BernoulliNB()
#伯努利贝叶斯
cvs = cross_val_score(
BNBmodel,oneHotData,data['Party'],cv = 10)
#进行K折交叉验证
cvs.mean()

运行代码:
在这里插入图片描述
在10折交叉验证中,伯努利贝叶斯模型得了0.88分,结果挺不错。

计算模型的混淆矩阵,观察模型预测能力:

from sklearn.metrics import confusion_matrixBNBmodel.fit(oneHotData,data['Party'])
#使用所有数据训练模型
data['predict Party'] = BNBmodel.predict(oneHotData)
#对所有数据进行预测
confusion_matrix(
data['Party'],
data['predict Party'
labels =['D','R']
)
#计算混淆矩阵,labels参数可由BNBmodel,classes_得到

执行代码:
在这里插入图片描述
可以看到,模型预测能力非常不错。


http://chatgpt.dhexx.cn/article/LuJPrtei.shtml

相关文章

【机器学习原理】KNN分类算法

上一篇:Logistic回归分类算法 文章目录 一、KNN分类算法:用多数表决进行分类1. 用“同类相吸”的办法解决分类问题可视化下的分类问题 2. KNN分类算法的基本方法:多数表决3. 表决权问题4. KNN的具体含义 KNN分类算法原理1. KNN分类算法的基本…

Python实现分类算法

前言:出自于学校课程数据挖掘与分析布置的实验小作业,案例经典,代码注释较全,供大家参考。 题目: 现有西瓜挑选数据文件:dataset.txt,编程实现朴素贝叶斯算法,并判断有如下特征的瓜…

贝叶斯分类算法

贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。这篇文章我尽可能用直白的话语总结一下我们学习会上讲到的朴素贝叶斯分类算法&#…

基于Python实现五大常用分类算法(原理+代码)

读: 在机器学习和统计中,分类算法通过对已知类别训练集的计算和分析,从中发现类别规则并预测新数据的类别。分类被认为是监督学习的一个实例,即学习可以获得正确识别的观察的训练集的情况。 实现分类的算法,特别是在具…

EIGRP综合实验解析

实验要求 1.R1为ISP,只能配置IP地址 2.R1与R2之间为PPP封装,使用CHAP认证,R1为主认证方 3.R2-R8地址为172.16.0.0/16 4.R4的S1/1口带宽为800K。R4到R2环回为非等开销负载均衡 5.保证更新安全,减少路由条目数量 6.R6到达R8环回通过R7进行 7.R2…

EIGRP协议

EIGRP是距离矢量路由协议,但又非距离矢量那样路由完全是别人告诉,而是通过维护3张表自己对比计算后放入路由表。同样会受水平分割影响。 EIGRP建邻居过程 第一步:路由器R1和R2接口配置EIGRP后,在相应接口上向外组播发送Hello包…

EIGRP总结

EIGRP 增强内部网关路由协议 无类别距离矢量IGP协议; 增量更新—仅触发更新,无周期更新----更新量小(DV),可靠性高(RTP),保活机制(hello) 复合度量—多个参数…

EIGRP

EIGRP增强型网关路由协议 基本内容: Cisco私有;无类别距离矢量协议;跨层封装协议,封装于网络层–协议号88;组播更新:224.0.0.10 ;支持非等开销负载均衡;增量更新(部分更…

思科EIGRP配置及基本讲解

思科EIGRP配置及基本讲解 什么是EIGRP EIGRP全称 [增强型内部网关路由选择协议] 是思科自主研发的动态路由选择协议,按类型划分是一款IGP协议,距离矢量协议,是一款基于传闻的协议。 EIGRP是思科的私有协议,直到13年,此…

EIGRP协议的配置

EIGRP(Enhanced Interior Gateway Routing Protocol,增强型内部网关路由协议)是Cisco公司开发的一个平衡混合型路由协议,它融合了距离向量和链路状态两种路由协议的优点,支持IP,IPX和ApplleTalk等多种网络层协议。由于TCP/IP是当今…

网络篇 EIGRP协议-27

目录 一、EIGRP的基本概述 二、EIGRP的特点 三、EIGRP的四种重要技术 四、EIGRP的相关术语 五、EIGRP的三张表 1.路由表 2.邻居表 3.拓扑表 六、EIGRP的五个分组 1.Hello分组: 2.Update更新分组: 3.Query查询分组: 4.Reply应答分…

EIGRP(Enhanced Interior Gateway Routing Protocol,增加型内部网关路由协议)

EIGRP是Cisco公司于1992年开发的一个无类别距离矢量路由协议,它融合了距离矢量和链路状态两种路由协议的优点。EIGRP是Cisco的专有路由协议, 是Cisco的IGRP协议的增加版。IGRP是一种有类距离矢量协议,Cisco IOS 12.3版以后不再支持该协议。 E…

EIGRP理论详解及基础实验

EIGRP:( Enhanced Interior Gateway Routing Protocol )增强型内部网关路由协议 EIGRP 是一种Cisco专用协议,同时具备链路状态和距离矢量路由协议的优点.只发送变化后的信息(这类似于链路状态协议),同时只将这些信息发送给邻接路由器(这类似于距离矢量协议). 距离矢量路由协议…

CSMA协议

介质访问控制 CSMA协议 1-坚持CSMA 非坚持CSMA p-坚持CSMA 三种CSMA对比总结

3.4.2 CSMA/CD协议

为了解决各站点争用总线的问题,共享总线使用了一种专用协议CSMA/CD,它是载波监听多址接入/碰撞检测(Carrier Sence Multiple Access Collision Detection)的英文缩写。 假设站点C要发送帧,它首先进行载波监听&#xff…

关于CSMA/CA和CSMA/CD的区别

转载自:https://www.cnblogs.com/aixin0813/p/3289183.html 1.1 载波侦听多路访问 根据具体的监听/发送策略,可将CSMA分为: 非持续CSMA(英语:non-persistent CSMA) 当要发送帧的设备侦听到线路忙或发生冲…

计算机网络:随机访问介质访问控制之CSMA/CA协议

CSMA/CD协议已成功应用于使用有线连接的局域网,但在无线局域网环境下,却不能简单地搬用CSMA/CD协议,特别是碰撞检测部分。主要有两个原因: 1)接收信号的强度往往会远小于发送信号的强度,且在无线介质上信号强度的动态…

CSMA/CD协议详解

一、协议背景 最早的以太网是总线网络,当一台计算机发送数据时,总线上所有计算机都能检测到这个数据(广 播通讯方式)。为了通讯的简便,传统总线型以太网采取了以下措施: 1.提供的服务为不可靠的交付: (1.采用较为灵活…

CSMA/CD

carrier sense multi-access/collision detect,载波监听多路访问/冲突检测 工作原理: 发送数据前进行载波监听判断信道是否空闲,若信道忙则等待一段随机时间;若信道空闲则立即发送数据,发送数据过程中同时检测是否产…

CSMA/CD和拥塞控制AIMD其实是一回事!

今天下班的班车上,撸论文,找到一篇关于CSMA/CD性能分析的,然而下载需要钱,作罢。我讨厌知识付费,因为我崇尚知识免费共享。 正好我上周末也写了一篇与此相关的: 谈谈CSMA/CD,TCP中的二进制指数…