// 最初的概率分布,不知道这个世界什么样子,所以我也不知道我自己的位置,总共5个格子的世界,我在任意一个格子里的概率是0.2
p=[0.2, 0.2, 0.2, 0.2, 0.2]
// 真实世界的分布是确定的
world=['green', 'red', 'red', 'green', 'green']
// 我们身上有一个警报器,走过红色门口的时候,发出警报说,我现在在红色门口
Z = ‘red’
// 但是这个警报器不一定保证准确率,我们按照如下假设设置:就是在红色门口, 有0.6的概率响起, 绿色为0.2
pHit = 0.6
pMiss = 0.2
def sense(p, Z):
q=[]
// 循环计算5个格子的可能性
for i in range(len(p)):
hit = (Z == world[i])
// 在每一个格子中,求得在这里的概率 = 原始概率P(i)×警报器准确率
q.append(p[i] * (hit * pHit + (1-hit) * pMiss))
s = sum(q)
for i in range(len(q)):
// 对每一项做正则化处理
q[i] = q[i] / s
return q
print (sense(p, 'green'))
贝叶斯估计
通过上边演示,我们已经明白贝叶斯核心原理,就是用已知概率推导未知概率。
本例子中,已知概率代表警报器概率,未知概率是我当前的位置的概率!!