贝叶斯分类的核心概念:

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

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

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

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

P={1−p,n=0p,n=1P = \begin{cases} 1-p, & n=0\\ p, & n = 1 \end{cases}P={1−p,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_得到

执行代码:

可以看到,模型预测能力非常不错。

伯努利贝叶斯分类算法相关推荐

  1. 伯努利贝叶斯分类器的应用

    伯努利贝叶斯分类器的应用   用户对其购买的蚊帐进行评论,该数据集是通过爬虫的方式获得,一共包含10644条评论,数据集中的Type变量为评论者所对应的情绪.首先将爬虫获得的数据集读入Python中, ...

  2. thinkcmf5调用指定分类的二级_python机器学习API介绍11: 伯努利贝叶斯分类器

    BernoulliNB是伯努利贝叶斯分类器,它是假设模型的条件概率分布满足对应的二次项分布,其原型为: class sklearn.naive_bayes.BernoulliNB(alpha=1.0, ...

  3. 【机器学习】贝叶斯分类三大实战项目:高斯模型进行疾病诊断、多项式模型进行文本分类、伯努利模型进行好/差评判别

    贝叶斯分类三大实战项目:高斯模型进行疾病诊断.多项式模型进行文本分类.伯努利模型进行好/差评判别 1 贝叶斯高斯模型 1.1 模块导入以及数据加载 1.2 划分数据 1.3 模型创建与评估 2 贝叶斯 ...

  4. 5 机器学习 朴素贝叶斯算法 高斯模型 多项式模型 伯努利模型 拉普拉普平滑系数 TfidfVectorizer

    机器学习 1 朴素贝叶斯算法 1.1 朴素贝叶斯算法介绍 朴素贝叶斯算法是一种衡量标签和特征之间概率关系的监督学习算法,是一种专注于分类的算法."朴素"二字表示这个算法基于一个朴素 ...

  5. 三种常用的朴素贝叶斯实现算法——高斯朴素贝叶斯、伯努利朴素贝叶斯、多项式朴素贝叶斯

    朴素贝叶斯 在机器学习中,朴素贝叶斯分类器是一系列以假设特征之间强(朴素)独立下运用贝叶斯定理为基础的简单概率分类器. 朴素贝叶斯算法Naive Bayes定义中有两个关键定义:特征之间强假设独立和贝 ...

  6. 【机器学习入门】(3) 朴素贝叶斯算法:多项式、高斯、伯努利,实例应用(心脏病预测)附python完整代码及数据集

    各位同学好,今天我和大家分享一下朴素贝叶斯算法中的三大模型.在上一篇文章中,我介绍了朴素贝叶斯算法的原理,并利用多项式模型进行了文本分类预测. 朴素贝叶斯算法 -- 原理,多项式模型文档分类预测,附p ...

  7. 二项分布算法(伯努利实验)

    二项分布 问题描述: 二项分布就是重复n次独立的伯努利试验.在每次试验中只有两种可能的结果,而且两种结果发生与否互相对立,并且相互独立,与其它各次试验结果无关,事件发生与否的概率在每一次独立试验中都保 ...

  8. 朴素贝叶斯算法系列:多项式贝叶斯、高斯贝叶斯、伯努利贝叶斯

    导入库 from sklearn.naive_bayes import MultinomialNB, GaussianNB, BernoulliNB 多项式贝叶斯 def MultinomialNB_ ...

  9. 机器学习:伯努利朴素贝叶斯分类器(原理+python实现)

    伯努利朴素贝叶斯分类器主要用于文本分类,下面我们以一个具体的例子,来讲述下伯努利朴素贝叶斯的原理和实现逻辑. 具体例子: 已知我们有八个句子以及每个句子对应的类别,即中性或侮辱性.那么再给出一个句子, ...

  10. 伯努利朴素贝叶斯【机器学习算法一朴素贝叶斯2】

    伯努利朴素贝叶斯方法适合于伯努利分布(即二项分布或0-1分布)的数据集. import numpy as np from sklearn.naive_bayes import BernoulliNB ...

最新文章

  1. sprintf 和strcpy 的差别
  2. Deployment
  3. 递归查询树状结构某个确定的节点
  4. openEuler系统配置yum镜像源
  5. 【聚类算法】sklearn聚类方法详解
  6. Linux SPI总线和设备驱动架构之一:系统概述
  7. [MATLAB学习笔记] global声明全部变量
  8. json添加元素 vue_详解通过JSON数据使用VUE.JS
  9. 虚拟化运维工具对金融行业的解决方案
  10. 熊猫数据集_熊猫迈向数据科学的第二部分
  11. dubbo接口快速测试技巧
  12. 第二章密码学基础与应用备考要点及真题分布
  13. 【BZOJ4518】征途,斜率优化DP
  14. 使用ELK在DC / OS中进行日志管理
  15. java算法面试题_Java算法面试题汇总
  16. 知识图谱指南:从理论到应用
  17. CANopen协议基础知识
  18. Dynamics 365 CRM 接入统一身份认证平台(单点登录集成)
  19. 电脑开两个及以上微信
  20. 如何使用Markdown语言编写文档

热门文章

  1. mis服务器系统,MIS系统中服务器推技术的实现
  2. windows 文件保护机制
  3. Windows defender 中保护历史记录不显示始终为空的解决办法
  4. python抢课_一个用python实现的东方时尚(驾校)抢课程序
  5. 已知等价关系求商集_等价关系、商集和集合的划分.pdf
  6. Linux中修改IP地址
  7. 计算机网络期中考试总结反思,期中考试总结反思600字
  8. html5考试总结300字,期中考试总结
  9. 微信公众号JS-SDK获取当前经纬度及地址信息
  10. 计算机桌面ie图标无法删除,解决桌面IE图标或者我的电脑无法删除