贝叶斯思维(实例2)——估计

火车头问题

铁路上以1到N命名火车头。有一天你看到一个标号60的火车头,请估计铁路上有多少火车头?

应用贝叶斯进行推理,可以将这个问题分成两步:
1. 在得到数据之前,我们对N的认识是什么?
2. 已知一个N的任意值后,得到数据(“标志为60号的火车头”)的似然度?

第一个问题的答案就是问题的前置概率,第二个问题是似然度。

在选择前置概率上,我们还没有太多的基本信息,先假设N可以是从1到1000等概率的任何值。

hypos = xrange(1, 1001)

接着需要的是似然函数。先假设存在一个有N个火车头的车队,我们看到60号火车头的概率是多少?假设只有一个列车运营公司,看到任一个火车头有同等可能,那么看到任何特定火车头的机会为1/N。似然度函数如下:

import logging

#定义字典对象
class _DictWrapper(object):

    #具体代码见《贝叶斯思维(实例1)》

    def InitSequence(self, values):
        for value in values:
            self.Set(value, 1)

    def __len__(self):
        return len(self.d)

#概率质量函数对象
class Pmf(_DictWrapper):

     #具体代码见《贝叶斯思维(实例1)》

def Probability(o):
    return o / (o + 1)

class Suite(Pmf):
    def Update(self, data):
        for hypo in self.Values():
            like = self.Likelihood(data, hypo)
 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值