博客
关于我
机器学习(湖北师范大学教程)-极大似然估计算法
阅读量:336 次
发布时间:2019-03-04

本文共 974 字,大约阅读时间需要 3 分钟。

考虑一个抛硬币的例子,假设这个硬币正面跟反面轻重不同,我们把这个硬币抛80次(即,我们获取一个样本x1=H,x2=T,…x80=T并把正面次数记下来,正面记为H,反面记为T),并把抛出一个正面的概率记为p,抛出一个反面的概率记为1-p。假设我们抛出了49个正面,31个反面,即49次H,31次T。假设这个硬币是我们从一个装了三个硬币的盒子里取出的。这三个硬币抛出正面的概率分别为p=1/3,p=1/2,p=2/3.这些硬币没有标记。所以我们无法知道哪个是哪个。使用最大似然估计,通过这些实验数据(即采样数据),我们可以计算出哪个硬币的可能性最大。这个似然函数取以下三个值中的一个:
P(H=49,T=31 | p=1/3) = 0.000

P(H=49,T=31 | p=2/3) = 0.054

P(H=49,T=31 | p=1/2) = 0.012
所以看到p=2/3时,似然函数取得最大值,这就是p的最大似然估计。下面是代码的计算:

import mathw = 2.0/3#最大概率h = 49#正面次数t = 31#返面次数def DefineParam():    H=h    T=t    return H,Tdef MaxinumLikehood(p=w):    H,T = DefineParam()#获取参数    f1 = math.factorial(H+T)/(math.factorial(H)*math.factorial(T))#计算p部分 80!/(49!*31!)    f2 = (p**H)*((1.0-p)**T)    return f1*f2#计算似然数值print(MaxinumLikehood())##下面是测试,用于验证似然估计算法的正确性# (发现最后一行的i接近0.6125,也就是w=0.6125时,似然数值(概率)最大) 而49/80=0.6125 说明似然估计算法是正确的w = 0.00001max = 0.0i=0.0while w<1:    k = MaxinumLikehood(w)    if k>max:        max = k        i = w        print(i,max)    w = w + 0.00001print(i,max)

在这里插入图片描述

转载地址:http://ujhe.baihongyu.com/

你可能感兴趣的文章
Edge浏览器:你的的内核我的芯
查看>>
chrome浏览器功能介绍
查看>>
linux shell 读取文件脚本
查看>>
git命令升级版用法
查看>>
sed常用命令
查看>>