首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Python中使用MLE估计高斯分布参数

如何在Python中使用MLE估计高斯分布参数
EN

Stack Overflow用户
提问于 2018-07-15 03:29:14
回答 1查看 3.5K关注 0票数 1

我有一组高斯分布的数据,这是一个直方图,显示了它们的实际外观:

我必须使用贝叶斯分类器将这些数据分类为两类,我正在使用sklearn这样做,它工作得很好。然而,作为工作的一部分,我必须使用最大似然估计估计数据的分布参数(σ,μ),并在我的分类器中使用它们。

那么,有没有python库或伪代码可以使用最大似然法估计高斯分布参数,以便我可以在分类器中使用估计值?

我在找Matlab语言的mle(data,'distribution',dist)之类的东西。

phat = mle(MPG,'distribution','burr')
phat =
34.6447    3.7898    3.5722
EN

回答 1

Stack Overflow用户

发布于 2018-07-15 04:11:31

因此,由于您的数据是多维的(D,在本例中特别是D=15),您需要对数据的平均值(D维)和协方差(D^2维)进行建模。

您可以使用numpy轻松地实现它,如下所示

import numpy as np

def gaussian_mle(data):                                                                                                                                                                               
    mu = data.mean(axis=0)                                                                                                                                                                            
    var = (data-mu).T @ (data-mu) / data.shape[0] #  this is slightly suboptimal, but instructive

    return mu, var                                                                                                                                                                                    

为了看看它是否有效,让我们在一些人工数据上运行它:

mean = [1.0, 3.14]                                                                                                                                                                                    
cov = [[2.0, 0.5], [0.5, 10]]                                                                                                                                                                         
data = np.random.multivariate_normal(mean, cov, 10000)                                                                                                                                                

print(gaussian_mle(data))

这为我们提供了自定义格式化之后(因为我们随机抽样,结果可能会略有不同):

(
    array([1.00981014, 3.1217965 ]), #  sample mean
    array([[2.0266404 , 0.43036865], 
           [0.43036865, 9.87599803]]) #  sample covariance
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51342724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档