Python--贝叶斯架构解决统计推断问题--Thinkbayes

本文介绍了使用Python的thinkbayes库实现贝叶斯架构,通过Morty Hall问题和不放回抽样的MM问题来阐述其应用。文中提到,贝叶斯架构能推广到处理多个元素的统计推断问题,并提供了Suite对象进行封装,简化了更新和打印概率质量函数的过程。
摘要由CSDN通过智能技术生成

Python 实现贝叶斯架构

coding准备:需要python载入thinkbayes.py,Github:https://github.com/AllenDowney/ThinkBayes/blob/master/code/thinkbayes.py

贝叶斯架构

主体coding:

class Cookie(Pmf):

```python
    def __init__(self,hypos) ###给每个hypo都赋予相同的先验概率
        Pmf.__init__(self)
        for hypo in hypos:
	    self.Set(hypo,1)
	self.Normalize()

    def Update(self,data): ###更新观测,改变相应概率
        for hypo in self.Values():
            like = self.Likelihood(data,hypo)
            self.Mult(hypo,like)
        self.Normalize()
        
    mixes={
        'Bow1':dict(vanilla=0.75, chocolate=0.25),
        'Bow2':dict(vanilla=0.5, chocolate=0.5),
        } ###用dict描述概率背景
    
    def Likelihood(self,data,hypo): ###计算似然度
        mix = self.mixes[hypo] ## Bow1 or Bow2?
        like = mix[data]       ## vanilla or chocolate?
        return like

hypos = ['Bow1','Bow2']
pmf = Cookie(hypos)

pmf.Update('vanilla')

for hypo, prob in pmf.Items():
	print(hypo,prob)

> Bow1 0.6
  Bow2 0.4

这个框架的一个好处是它可以推广到多个元素的情况:

dataset = ['vanilla','vanilla']
for data in dataset:    
    pmf.Update(data)

for hypo, prob in pmf.Items():
    print(hypo,prob)

> Bow1 0.692
  Bow2 0.308

这个code为我们提供了解决很多贝叶斯问题的一个框架

Morty Hall Problem:

from thinkbayes import Pmf
pmf = Pmf()

class monty(Pmf):
    
    def __init__(self,hypos
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值