>我正在尝试将高斯混合物拟合到 3 个变量数据集。我使用 3 个高斯模型在 python 中获得了一个 GMM 模型。
我的问题是:
- 如何从该 GMM 创建 PDF,就像 matlab 中的函数一样?
- 如何从 GMM 创建随机变量 (3d( 或抽样?
很多人上传了类似的问题,但我从来没有得到直接的答案。请提供有关如何从 GMM 采样的代码示例。
首先你需要知道你需要3个参数来创建GMM模型:
- 数据点
- 聚类均值
- 协方差矩阵
让每个数据点 i 和每个集群在你的情况下 k = 3 我是 已经假设您将每个集群的平均值作为列表,即意味着 和协方差中每个簇的协方差矩阵,即 每个集群的协方差。然后代码将如下所示 为您提供每个数据点的多元正态函数的值 i 和每个聚类 k 是:
import numpy as np
from scipy.stats import multivariate_normal
mnf= np.zeros((n_data, n_clusters))
for i in range(n_data):
for k in range(n_clusters):
mnf[i, k] = multivariate_normal.pdf(data[i],means[k],covariances[k])