《贝叶斯思维:统计建模的Python学习法》一2.6 M&M豆问题

本节书摘来自异步社区《贝叶斯思维:统计建模的Python学习法》一书中的第2章,第2.6节,作者【美】Allen B. Downey,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.6 M&M豆问题

我们可以使用Suite框架来解决M&M豆的问题。除了编写Likelihood有点棘手,其他一切都很简单。

首先,需要对1995年之前和之后的颜色混合情况进行封装:

mix94=dict(brown= 30,
           yellow= 20,
           red= 20,
           green= 10,
           orange= 10,
           tan= 10) 

    mix96=dict(blue= 24,
               green= 20,
               orange= 16,
               yellow= 14,
               red= 13,
               brown= 13)

然后,封装假设:

    hypoA =dict(bag1 = mix94,bag2 = mix96) 
    hypoB =dict(bag1 = mix96,bag2 = mix94)

hypoA表示假设袋1是1994年,袋2是1996年。hypoB是相反的组合。

接下来,从假设的名称来映射其含义:

hypotheses=dict(A=hypoA,B=hypoB)

最后,开始编写Likelihood。在这种情况下,假设hypo是一个A或B的字符串,数据是一个指定了袋子年份和颜色的元组。

  def Likelihood(self, data, hypo):
      bag, color = data
      mix = self.hypotheses[hypo][bag]
      like = mix[color]
      return like

下面是创建该suite对象并进行更新的代码:

suite = M_and_M('AB')

suite.Update(('bag1', 'yellow'))
suite.Update(('bag2', 'green')) 

suite.Print()

结果如下:

A 0.740740740741 
B 0.259259259259

A的后验概率大约是20/27,正是我们之前得到的。

本节中的代码可以从http://thinkbayes.com/m_and_m.py获得。欲了解更多信息,请参见前言的“代码指南”。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值