条件概率、全概率公式、贝叶斯公式

  • 条件概率公式:

    在事件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' 的类别

题目分析如下

  1. 朴素贝叶斯最后输出的结果是多个概率的比较,输出最大的那个概率所对应的y值
  2. 朴素贝叶斯是贝叶斯的变形
  3. 去除了贝叶斯的分母,也就是全概率的计算和使用,使公式得到简化。
  4. 朴素贝叶斯并不是准确的概率,只是近似比,但是这并不影响每个朴素贝叶斯的大小的比较
  5. 在朴素贝叶斯中,影响最终结果的条件,是相互独立的。
  6. 有几个条件对结果由影响,就是这几个条件的连乘
  7. 本题中对预测结果造成影响的条件有两个,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进行比较,谁的值大,就分为那一类。
  8. 剩下的事情就是统计计算需要的先验概率
  9. 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])

机器学习之朴素贝叶斯(一)思想及典型例题手写实现相关推荐

  1. 机器学习实战 朴素贝叶斯分类器

    基于概率论的分类方法: 朴素贝叶斯 我的微信公众号: s406205391; 欢迎大家一起学习,一起进步!!! k-近邻算法和决策树会给出"该数据属于哪一类"的明确回答.不过,分类 ...

  2. 【机器学习】朴素贝叶斯、SVM和数据分布检验分析

    [机器学习]朴素贝叶斯.SVM和数据分布检验分析 文章目录 1 朴素贝叶斯 2 SVM2.1 线性可分2.2 最大间隔超平面2.3 SVM 最优化问题 3 数据分布检验方法3.1 数据分布检验3.2 ...

  3. 机器学习:朴素贝叶斯

    机器学习:朴素贝叶斯 1 朴素贝叶斯应用场景 2 朴素贝叶斯相关公式 3 sklearn库中朴素贝叶斯运用 3.1 伯努利朴素贝叶斯 3.2 多项式朴素贝叶斯 3.3 高斯朴素贝叶斯 4 代码 4.1 ...

  4. 机器学习:朴素贝叶斯模型算法原理(含实战案例)

    机器学习:朴素贝叶斯模型算法原理 作者:i阿极 作者简介:Python领域新星作者.多项比赛获奖者:博主个人首页

  5. 机器学习之朴素贝叶斯 1

    机器学习之朴素贝叶斯 1 朴素贝叶斯 2 朴素贝叶斯应用 3 代码实现贝努力朴素贝叶斯 4 代码实现高斯朴素贝叶斯 5 代码实现多项式朴素贝叶斯 6 总结 前言:主要介绍朴素贝叶斯的概念.公式,以及代 ...

  6. 【机器学习算法-朴素贝叶斯、支持向量机】

    机器学习算法-朴素贝叶斯算法 1.朴素贝叶斯算法 2.支持向量机 2.1SVM基本综述 1.朴素贝叶斯算法 朴素贝叶斯是生成模型,需要根据已有的数据求出先验概率. 1.联合概率 2.条件概率 3.相互 ...

  7. 机器学习实战---朴素贝叶斯算法实现+使用K折交叉验证(代码详解+创新)

    <机器学习实战朴素贝叶斯算法实现+使用K折交叉验证> 未经允许,不得擅自转载! 提供数据集如下(永久有效,需要的自行下载): 链接:https://pan.baidu.com/s/1Sv0 ...

  8. 机器学习__04__朴素贝叶斯算法

    文章目录 朴素贝叶斯 1.0 概述 2.0 相关原理 2.1后验概率最大化含义 2.2拉普拉斯平滑 3.0 朴素贝叶斯的三种形式和实现 3.1高斯型 3.2多项式型 3.3伯努利型 4.0 中文文本分 ...

  9. 机器学习:朴素贝叶斯【需要完善】

    朴素贝叶斯(Naive Bayes ,NB)算法是基于贝叶斯定理与特征条件独立假设的分类方法,该算法是有监督的学习算法,解决的是分类问题,是将一个未知样本分到几个预先已知类别的过程. 朴素贝叶斯的思想 ...

最新文章

  1. IOS时间传递机制简记
  2. Android平台调用WebService详解
  3. python自动搜索爬取下载文件-python批量爬取下载抖音视频
  4. python在线课程-开始网上在线深度学习python课程
  5. opencv4 c++ 提取图片中的白色区域_【从零学习OpenCV 4】形态学应用
  6. linux 无外网情况下安装 mysql
  7. Git 之四 分支管理
  8. pythontime模块计算时长_用python的time模块查看你出生多长时间了
  9. 只调用一次_邹军:数控宏程序编程入门之程序的调用,老师傅用了都说好
  10. Ubuntu搭建嵌入式开发(交叉编译)环境-转
  11. Python: 序列list:保持元素顺序同时消除重复值
  12. spdlog: undefined reference to `fmt::SystemError::init(int, fmt::BasicCStringRef<char>, fmt::ArgList
  13. Android零基础入门第66节:RecyclerView点击事件处理
  14. Spring框架中的核心思想包括什么
  15. (转)Windows 批处理(bat)语法大全
  16. 搜狗输入法弹出搜狗新闻的解决办法
  17. 找茬游戏html5源码,大家来找茬游戏以JS实现
  18. linux下7z文件解压命令
  19. ip地址、DNS服务器、子网掩码、默认网关之间关系
  20. 罗丹明RB/四甲基罗丹明标记酰胺化果胶Amidated Pectin, Rhodamine B/TRITC labeled;Rhodamine B/TRITC-Amidated Pectin

热门文章

  1. Twitter 是如何做新版手机网站的
  2. C++学习(二零七)Tegra
  3. STM32开发板型号介绍和选择
  4. [CF628D]Magic Numbers 题解
  5. webSocket一对一 、一对多通信
  6. 惠普HP DeskJet Ink Advantage 5088 打印机驱动
  7. Matlab系列之绘图基础
  8. windows10系统访问不了服务器,win10专业版系统中不能访问服务器8080端口_windows之家...
  9. vue引入bpm并调用流程接口获取xml,生成流程图
  10. 三国志战略版:国庆英雄集结解说_三