【机器学习算法-python实现】最大似然估计(Maximum Likelihood)

简介: 1.背景           最大似然估计是概率论中常常涉及到的一种统计方法。大体的思想是,在知道概率密度f的前提下,我们进行一次采样,就可以根据f来计算这个采样实现的可能性。当然最大似然可以有很多变化,这里实现一种简单的,实际项目需要的时候可以再更改。       博主是参照wiki来学习的,地址请点击我           这里实现的是特别简单的例子如下(摘自wiki的最大似然)

1.背景

            最大似然估计是概率论中常常涉及到的一种统计方法。大体的思想是,在知道概率密度f的前提下,我们进行一次采样,就可以根据f来计算这个采样实现的可能性。当然最大似然可以有很多变化,这里实现一种简单的,实际项目需要的时候可以再更改。
       博主是参照wiki来学习的,地址请点击我
            这里实现的是特别简单的例子如下(摘自wiki的最大似然)

离散分布,离散有限参数空间[编辑]

考虑一个抛硬币的例子。假设这个硬币正面跟反面轻重不同。我们把这个硬币抛80次(即,我们获取一个采样x_1=\mbox{H}, x_2=\mbox{T}, \ldots, x_{80}=\mbox{T}并把正面的次数记下来,正面记为H,反面记为T)。并把抛出一个正面的概率记为p,抛出一个反面的概率记为1-p(因此,这里的p即相当于上边的\theta)。假设我们抛出了49个正面,31个反面,即49次H,31次T。假设这个硬币是我们从一个装了三个硬币的盒子里头取出的。这三个硬币抛出正面的概率分别为p=1/3p=1/2p=2/3.这些硬币没有标记,所以我们无法知道哪个是哪个。使用最大似然估计,通过这些试验数据(即采样数据),我们可以计算出哪个硬币的可能性最大。这个似然函数取以下三个值中的一个:

\begin{matrix}\mathbb{P}(\mbox{H=49, T=31 }\mid p=1/3) & = & \binom{80}{49}(1/3)^{49}(1-1/3)^{31} \approx 0.000 \\&&\\\mathbb{P}(\mbox{H=49, T=31 }\mid p=1/2) & = & \binom{80}{49}(1/2)^{49}(1-1/2)^{31} \approx 0.012 \\&&\\\mathbb{P}(\mbox{H=49, T=31 }\mid p=2/3) & = & \binom{80}{49}(2/3)^{49}(1-2/3)^{31} \approx 0.054 \\\end{matrix}

我们可以看到当\widehat{p}=2/3时,似然函数取得最大值。这就是p的最大似然估计。


2.实现部分


          有一点要提的是,因为用到了阶乘,关于阶乘问题本来想到的方法是用递归来实现。但是google了一下发现其实python的reduce方法用起来更加方便,一句话就解决的。
 
def Factorial(x):
    return reduce(lambda x,y:x*y,range(1,x+1))  

      
完整工程:
'''
Created on 2014-8-22
@author: Garvin
Maximum Likelihood theory practic

This code is base on the http://zh.wikipedia.org/wiki/%E6%9C%80%E5%A4%A7%E4%BC%BC%E7%84%B6%E4%BC%B0%E8%AE%A1
'''
w=2.0/3
h=49
t=31

def DefineParam():
    H=h
    T=t
    return H,T

def MaximumLikelihood(p=w):
    H,T=DefineParam()
    f1=Factorial(H+T)/(Factorial(H)*Factorial(T))
    
    f2=(p**H)*((1.0-p)**T)
    
    
    return f1*f2
    
    
def Factorial(x):
    return reduce(lambda x,y:x*y,range(1,x+1))    
    
    


实现效果,对应上面的例子,当H=49,T=31,是P=2/3概率的可能性



代码地址:请点击我


/********************************

* 本文来自博客  “李博Garvin“

* 转载请标明出处:http://blog.csdn.net/buptgshengod

******************************************/



目录
相关文章
|
25天前
|
算法 搜索推荐 JavaScript
基于python智能推荐算法的全屋定制系统
本研究聚焦基于智能推荐算法的全屋定制平台网站设计,旨在解决消费者在个性化定制中面临的选择难题。通过整合Django、Vue、Python与MySQL等技术,构建集家装设计、材料推荐、家具搭配于一体的一站式智能服务平台,提升用户体验与行业数字化水平。
|
1月前
|
存储 监控 算法
监控电脑屏幕的帧数据检索 Python 语言算法
针对监控电脑屏幕场景,本文提出基于哈希表的帧数据高效检索方案。利用时间戳作键,实现O(1)级查询与去重,结合链式地址法支持多条件检索,并通过Python实现插入、查询、删除操作。测试表明,相较传统列表,检索速度提升80%以上,存储减少15%,具备高实时性与可扩展性,适用于大规模屏幕监控系统。
107 5
|
1月前
|
机器学习/深度学习 数据采集 人工智能
【机器学习算法篇】K-近邻算法
K近邻(KNN)是一种基于“物以类聚”思想的监督学习算法,通过计算样本间距离,选取最近K个邻居投票决定类别。支持多种距离度量,如欧式、曼哈顿、余弦相似度等,适用于分类与回归任务。结合Scikit-learn可高效实现,需合理选择K值并进行数据预处理,常用于鸢尾花分类等经典案例。(238字)
|
2月前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
172 26
|
2月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
154 0
|
2月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于改进型A*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于改进型A*算法的机器人路径规划(Python代码实现)
195 0
|
2月前
|
机器学习/深度学习 编解码 算法
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
274 4
|
2月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于A*算法的机器人路径规划研究(Python代码实现)
【机器人路径规划】基于A*算法的机器人路径规划研究(Python代码实现)
402 4
|
2月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于深度优先搜索(Depth-First-Search,DFS)算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于深度优先搜索(Depth-First-Search,DFS)算法的机器人路径规划(Python代码实现)
219 3
|
2月前
|
算法 机器人 定位技术
【机器人路径规划】基于流场寻路算法(Flow Field Pathfinding)的机器人路径规划(Python代码实现)
【机器人路径规划】基于流场寻路算法(Flow Field Pathfinding)的机器人路径规划(Python代码实现)
137 4

推荐镜像

更多