1

我已经用 sklearn 训练了一个高斯混合模型,并且我试图在给定集群均值和方差的情况下获得数据点的非归一化责任。

GMM.predict_proba不幸的是,返回归一化概率,使它们总和为 1,但我需要原始概率。

我尝试了以下方法(GMM 是拟合的 GM 模型):

import numpy as np
from sklearn import mixture
lpr = (mixture.log_multivariate_normal_density(X, GMM.means_, GMM.covars_, GMM.covariance_type) + np.log(GMM.weights_))
probs = np.exp(lpr)

但我得到的概率大于 1。

我究竟做错了什么?

4

1 回答 1

0

lpr是高斯分量的对数概率。要转换为 GMM 的概率,应在对数空间中对这些论文进行求和。下面的代码将解释这一点。

from sklearn.utils.extmath import logsumexp

lpr = (mixture.log_multivariate_normal_density(X, GMM.means_, GMM.covars_, GMM.covariance_type) + np.log(GMM.weights_)) # probabilities of components
logprob = logsumexp(lpr, axis=1) # logsum to get probability of GMM
probs = np.exp(logprob) # 0 < probs < 1 
于 2014-04-26T08:08:31.240 回答