代码解释似然函数

50 篇文章 3 订阅
15 篇文章 0 订阅
#encoding: utf-8
'''
案例 弹出硬币10次 参数 a(0< a <1)代表硬币正面朝上的概率,反面朝上的概率为 1-a。
求参数a的值
首先思考在已知最后结果的前提下,表达当前概率函数的表达式 [a]^y1*[1-a]^(1-yi)= Y, yi对应标签
Y代表当前的硬币的结果的概率,似然函数就是上述表达式累成的结果。
我们重复试验10次 。
'''
import matplotlib.pyplot as plt
import random
#以序列seq中值出现的概率来随机生成某个值
def rand_pick(seq, probabilities):
    x = random.uniform(0, 1)
    cumprob = 0.0
    for item, item_pro in zip(seq, probabilities):
        cumprob += item_pro
        if x < cumprob:
            break
    return item
value_list = [0, 1]
probabilities = [0.5, 0.5]  #设置初始的概率值
list_data = []
for i in range(0, 10):
    list_data.append(rand_pick(value_list, probabilities))
print(list_data)

'''
a = 0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1 
'''
a = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]
Y = []
for i in range(0, len(a)):
    y = 1
    for j in range(0, len(list_data)):
        y *= (a[i] ** list_data[j]) * ((1-a[i]) ** (1 - list_data[j]))  #我们的似然函数 累乘的结果,得到的还是概率
    Y.append(y)

print Y

plt.plot(a, Y)
plt.show()

'''
如图所示 当我们a=0.5 左右时候 可以得到似然函数的最大值,
也就是说当似然函数取极大值的时候我们可以得到a=0.5,a=0.5符合我们 刚开始设置的概率,
硬币朝上的概率是0.5
'''
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值