如何获得GMM集群的非规范责任?

2024-04-25 22:38:22 发布

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

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

GMM.predict_proba不幸的是返回标准化的概率,因此它们的总和为1,但我需要原始概率。在

我试过以下几种(GMM是适合通用的车型):

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。在

我做错什么了?在


Tags: 数据模型importlognp聚类sklearn概率
1条回答
网友
1楼 · 发布于 2024-04-25 22:38:22

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 

相关问题 更多 >

    热门问题