专栏首页数据挖掘朴素贝叶斯算法

朴素贝叶斯算法

最为广泛的两种分类模型是 决策树模型(Decision Tree Model) 和 朴素贝叶斯模型(Naive Bayesian Model,NBM)。

朴素贝叶斯算法思路

朴素贝叶斯法是基于 贝叶斯定理与特征条件独立假设 的分类方法,按照以前 决策树 的数据,利用朴素贝叶斯进行分类:

假设存在如下一组信息:

天气

气温

湿度

外出

晴朗

高温

无风

no

晴朗

高温

有风

no

多云

高温

无风

yes

下雨

温暖

无风

yes

下雨

寒冷

正常

无风

yes

下雨

寒冷

正常

有风

no

多云

寒冷

正常

有风

yes

晴朗

温暖

无风

no

晴朗

寒冷

正常

无风

yes

下雨

温暖

正常

无风

yes

晴朗

温暖

正常

有风

yes

多云

温暖

有风

yes

多云

高温

正常

无风

yes

下雨

温暖

有风

no

将上面的表格整理一下如下:

天气

yes

no

气温

yes

no

湿度

yes

no

yes

no

外出

yes

no

晴朗

2

3

高温

2

2

3

4

无风

6

2

外出

9

5

多云

4

0

温暖

4

2

正常

6

1

有风

3

3

下雨

3

2

寒冷

3

1

假设所有的变量都是 独立的 ,那么在以下天气中是否该外出:

evidence = ['晴朗', '寒冷', '高', '有风']

将上述事件记为 EE = [E1, E2, E3, E4] , 当A、B相互独立时,由:

得贝叶斯定理:

得:

又因为4个指标是相互独立的,所以:

带入计算得到:

P(yes|E)*P(E)=2/9×3/9×3/9×3/9×9/14=0.0053
P(no|E)*P(E)=3/5×1/5×4/5×3/5×5/14=0.0206

外出概率:0.005291005291005291,不外出概率:0.02057142857142857,不适合外出!

朴素贝叶斯算法代码

朴素贝叶斯最重要的是构造 训练样本 ,将表:

天气

yes

no

气温

yes

no

湿度

yes

no

yes

no

外出

yes

no

晴朗

2

3

高温

2

2

3

4

无风

6

2

外出

9

5

多云

4

0

温暖

4

2

正常

6

1

有风

3

3

下雨

3

2

寒冷

3

1

转化为字典:

newcondition = {'高温': {'no': 0.4, 'yes': 0.2222222222222222}, '高': {'no': 0.8, 'yes': 0.3333333333333333}, '有风': {'no': 0.6, 'yes': 0.3333333333333333}, '温暖': {'no': 0.4, 'yes': 0.4444444444444444}, '多云': {'yes': 0.4444444444444444}, '寒冷': {'no': 0.2, 'yes': 0.3333333333333333}, '正常': {'no': 0.2, 'yes': 0.6666666666666666}, '下雨': {'no': 0.4, 'yes': 0.3333333333333333}, '无风': {'no': 0.4, 'yes': 0.6666666666666666}, '晴朗': {'no': 0.6, 'yes': 0.2222222222222222}}

newresult = {'no': 0.35714285714285715, 'yes': 0.6428571428571429}

最后相乘计算出概率即可:

# 判断是否外出
def judgeresult(newcondition, newresult, weather):
    yesresult = 1
    noresult = 1
    for item in weather:
        # 外出的概率
        yesresult = yesresult * newcondition[item]["yes"]
        noresult = noresult * newcondition[item]["no"]

    yesresult = yesresult * newresult["yes"]
    noresult = noresult * newresult["no"]

    if yesresult >= noresult:
        print("外出概率:" + str(yesresult) + ",不外出概率:" + str(noresult) + ",适合外出!")
    else:
        print("外出概率:" + str(yesresult) + ",不外出概率:" + str(noresult) + ",不适合外出!")

最终结果为:

外出概率:0.005291005291005291,不外出概率:0.02057142857142857,不适合外出!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 决策树ID3算法

    决策树 (Decision Tree)是在已知各种情况发生概率的基础上,通过构成 决策树 来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策...

    机器学习和大数据挖掘
  • 【机器学习】算法原理详细推导与实现(四):支持向量机(上)

    在之前的文章中,包括线性回归和逻辑回归,都是以线性分界线进行分割划分种类的。而本次介绍一种很强的分类器【支持向量机】,它适用于线性和非线性分界线的分类方法。

    机器学习和大数据挖掘
  • 【机器学习】算法原理详细推导与实现(六):k-means算法

    之前几个章节都是介绍有监督学习,这个章节介绍无监督学习,这是一个被称为k-means的聚类算法,也叫做k均值聚类算法。

    机器学习和大数据挖掘
  • 决策树ID3算法

    决策树 (Decision Tree)是在已知各种情况发生概率的基础上,通过构成 决策树 来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策...

    机器学习和大数据挖掘
  • [MFC]禁止双击标题栏最大化&还原

    原文链接:http://blog.csdn.net/humanking7/article/details/52752544

    祥知道
  • form-create实现纯Json驱动表单验证

    wePanda
  • 原 Mac下为树莓派(Raspbian)安

    霡霂
  • 在HTML中使用JavaScript

    pitaojin
  • 拿 AI 当辅助,GitHub 上的这几个项目或许能帮你摘掉手残党的帽子

    当这班工程师把 “魔爪” 伸向艺术家们擅长的绘画领域时,有趣的事情发生了,他们发现一些艺术家们引以为豪的图像绘制、色块填充、图层修补等技巧都能轻而易举的通过 A...

    GitHubDaily
  • Spring Boot 自定義 HttpMessageConverter 解決 String 類型返回JSON對象問題

    HttpMessageConverter 接口介绍 org.springframework.http.converter.HttpMessageConvert...

    一个会写诗的程序员

扫码关注云+社区

领取腾讯云代金券