如何用Python中的MLE估计高斯分布参数

2024-05-13 19:41:10 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Gaussian distribution

我必须使用bayesian分类器将这些数据分为两个类,我使用sklearn进行分类,而且效果良好。然而,作为工作的一部分,我必须使用MLE估计数据的分布参数(σ,μ),并将其用于分类器中。在

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

我在寻找类似于mle(data,'distribution',dist)的东西。在

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

Tags: 数据代码参数分类器分类估计值bayesiansklearn
1条回答
网友
1楼 · 发布于 2024-05-13 19:41:10

因为你的数据是多维的(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                                                                                                                                                                                    

为了确保它能正常工作,让我们在一些人工数据上运行它:

^{pr2}$

这给了我们,在定制格式(因为我们随机抽样,结果可能略有不同):

(
    array([1.00981014, 3.1217965 ]), #  sample mean
    array([[2.0266404 , 0.43036865], 
           [0.43036865, 9.87599803]]) #  sample covariance
)

相关问题 更多 >