机器学习之朴素贝叶斯(一)思想及典型例题手写实现
条件概率、全概率公式、贝叶斯公式
条件概率公式:
在事件B发生的条件下,A发生的概率
换一种写法:
理解了条件概率公式后,用一个引例介绍后面两个公式:村子里有三个小偷
,事件B={村子失窃},已知小偷们的偷窃成功率依次是
,除夕夜去偷的概率依次是
全概率公式:
求:村庄除夕夜失窃的概率
贝叶斯公式:
求:在村子失窃的条件下,偷窃者是某个小偷的概率
朴素贝叶斯
李航《统计学习方法》中的定义
朴素贝叶斯(naive Bayes) 法是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对给定的输入x,利用贝叶斯定理求出后验概率最大的输出y。朴素贝叶斯法实现简单,学习与预测的效率都很高,是一种常用的方法。
经典例题数据如下
X1,X2,Y
1,S,-1
1,M,-1
1,M,1
1,S,1
1,S,-1
2,S,-1
2,M,-1
2,M,1
2,L,1
2,L,1
3,L,1
3,M,1
3,M,1
3,L,1
3,L,-1
>>预测x1 = 2,x2 = 'S' 的类别
题目分析如下
- 朴素贝叶斯最后输出的结果是多个概率的比较,输出最大的那个概率所对应的y值
- 朴素贝叶斯是贝叶斯的变形
- 去除了贝叶斯的分母,也就是全概率的计算和使用,使公式得到简化。
- 朴素贝叶斯并不是准确的概率,只是近似比,但是这并不影响每个朴素贝叶斯的大小的比较
- 在朴素贝叶斯中,影响最终结果的条件,是相互独立的。
- 有几个条件对结果由影响,就是这几个条件的连乘
- 本题中对预测结果造成影响的条件有两个,x1=2和x2=‘S’,那么可以理解为:
P1(y=1|(x1=1,x2=‘S’)) = P(y=1) * P(x1=2|y=1) * P(x2=‘S’|y=1)
P2(y=-1|(x1=1,x2=‘S’)) = P(y=-1) * P(x1=2|y=-1) * P(x2=‘S’|y=-1)
最终将p1和p2进行比较,谁的值大,就分为那一类。 - 剩下的事情就是统计计算需要的先验概率
- P(y=1) = 9/16
P(x1=2|y=1) = 3/6
……等等
代码实现如下
'''朴素贝叶斯
'''
import pandas as pd
df = pd.read_csv(r'../datas/bayes_lihang.txt',delimiter=',')
X = df.iloc[:,:-1]
y = df.iloc[:,-1]
y = list(set(y.values)) # 【1,-1】# 预测数据
X_predict = [2,'S']
x1 = X_predict[0]
x2 = X_predict[1]# 记录概率值和概率值所对应的y标签
dis = []
for df_y in y:# 1.统计标签为df_y的所有数据df_y_count =df[df['Y']==df_y]['Y'].count()# 2.统计所有样本的个数m = df.shape[0]# 3.统计df_y中,所有x1的数据个数x1_y = df[(df['Y']==df_y) & (df['X1']==x1)]['X1'].count()# 4.统计df_y中,所有x2的数据的个数x2_y = df[(df['Y']==df_y) & (df['X2']==x2)]['X2'].count()# 计算概率p = (df_y_count/m) * (x1_y/df_y_count) * (x2_y/df_y_count)# 存储概率 方便稍后比较dis.append([p,df_y])# 排序 按照概率最大排序,输出第一个概率下的y标签
dis.sort(key=lambda s:s[0],reverse=True)
print(dis[0][1])
机器学习之朴素贝叶斯(一)思想及典型例题手写实现相关推荐
- 机器学习实战 朴素贝叶斯分类器
基于概率论的分类方法: 朴素贝叶斯 我的微信公众号: s406205391; 欢迎大家一起学习,一起进步!!! k-近邻算法和决策树会给出"该数据属于哪一类"的明确回答.不过,分类 ...
- 【机器学习】朴素贝叶斯、SVM和数据分布检验分析
[机器学习]朴素贝叶斯.SVM和数据分布检验分析 文章目录 1 朴素贝叶斯 2 SVM2.1 线性可分2.2 最大间隔超平面2.3 SVM 最优化问题 3 数据分布检验方法3.1 数据分布检验3.2 ...
- 机器学习:朴素贝叶斯
机器学习:朴素贝叶斯 1 朴素贝叶斯应用场景 2 朴素贝叶斯相关公式 3 sklearn库中朴素贝叶斯运用 3.1 伯努利朴素贝叶斯 3.2 多项式朴素贝叶斯 3.3 高斯朴素贝叶斯 4 代码 4.1 ...
- 机器学习:朴素贝叶斯模型算法原理(含实战案例)
机器学习:朴素贝叶斯模型算法原理 作者:i阿极 作者简介:Python领域新星作者.多项比赛获奖者:博主个人首页
- 机器学习之朴素贝叶斯 1
机器学习之朴素贝叶斯 1 朴素贝叶斯 2 朴素贝叶斯应用 3 代码实现贝努力朴素贝叶斯 4 代码实现高斯朴素贝叶斯 5 代码实现多项式朴素贝叶斯 6 总结 前言:主要介绍朴素贝叶斯的概念.公式,以及代 ...
- 【机器学习算法-朴素贝叶斯、支持向量机】
机器学习算法-朴素贝叶斯算法 1.朴素贝叶斯算法 2.支持向量机 2.1SVM基本综述 1.朴素贝叶斯算法 朴素贝叶斯是生成模型,需要根据已有的数据求出先验概率. 1.联合概率 2.条件概率 3.相互 ...
- 机器学习实战---朴素贝叶斯算法实现+使用K折交叉验证(代码详解+创新)
<机器学习实战朴素贝叶斯算法实现+使用K折交叉验证> 未经允许,不得擅自转载! 提供数据集如下(永久有效,需要的自行下载): 链接:https://pan.baidu.com/s/1Sv0 ...
- 机器学习__04__朴素贝叶斯算法
文章目录 朴素贝叶斯 1.0 概述 2.0 相关原理 2.1后验概率最大化含义 2.2拉普拉斯平滑 3.0 朴素贝叶斯的三种形式和实现 3.1高斯型 3.2多项式型 3.3伯努利型 4.0 中文文本分 ...
- 机器学习:朴素贝叶斯【需要完善】
朴素贝叶斯(Naive Bayes ,NB)算法是基于贝叶斯定理与特征条件独立假设的分类方法,该算法是有监督的学习算法,解决的是分类问题,是将一个未知样本分到几个预先已知类别的过程. 朴素贝叶斯的思想 ...
最新文章
- IOS时间传递机制简记
- Android平台调用WebService详解
- python自动搜索爬取下载文件-python批量爬取下载抖音视频
- python在线课程-开始网上在线深度学习python课程
- opencv4 c++ 提取图片中的白色区域_【从零学习OpenCV 4】形态学应用
- linux 无外网情况下安装 mysql
- Git 之四 分支管理
- pythontime模块计算时长_用python的time模块查看你出生多长时间了
- 只调用一次_邹军:数控宏程序编程入门之程序的调用,老师傅用了都说好
- Ubuntu搭建嵌入式开发(交叉编译)环境-转
- Python: 序列list:保持元素顺序同时消除重复值
- spdlog: undefined reference to `fmt::SystemError::init(int, fmt::BasicCStringRef<char>, fmt::ArgList
- Android零基础入门第66节:RecyclerView点击事件处理
- Spring框架中的核心思想包括什么
- (转)Windows 批处理(bat)语法大全
- 搜狗输入法弹出搜狗新闻的解决办法
- 找茬游戏html5源码,大家来找茬游戏以JS实现
- linux下7z文件解压命令
- ip地址、DNS服务器、子网掩码、默认网关之间关系
- 罗丹明RB/四甲基罗丹明标记酰胺化果胶Amidated Pectin, Rhodamine B/TRITC labeled;Rhodamine B/TRITC-Amidated Pectin
热门文章
- Twitter 是如何做新版手机网站的
- C++学习(二零七)Tegra
- STM32开发板型号介绍和选择
- [CF628D]Magic Numbers 题解
- webSocket一对一 、一对多通信
- 惠普HP DeskJet Ink Advantage 5088 打印机驱动
- Matlab系列之绘图基础
- windows10系统访问不了服务器,win10专业版系统中不能访问服务器8080端口_windows之家...
- vue引入bpm并调用流程接口获取xml,生成流程图
- 三国志战略版:国庆英雄集结解说_三