我有一组高斯分布的数据,这是一个直方图,显示了它们的实际外观:
我必须使用贝叶斯分类器将这些数据分类为两类,我正在使用sklearn
这样做,它工作得很好。然而,作为工作的一部分,我必须使用最大似然估计估计数据的分布参数(σ,μ),并在我的分类器中使用它们。
那么,有没有python库或伪代码可以使用最大似然法估计高斯分布参数,以便我可以在分类器中使用估计值?
我在找Matlab语言的mle(data,'distribution',dist)
之类的东西。
phat = mle(MPG,'distribution','burr')
phat =
34.6447 3.7898 3.5722
发布于 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
)
https://stackoverflow.com/questions/51342724
复制相似问题