0

我在下面给出了一段代码,它生成高斯分布并从中采样数据:

input = pd.read_csv("..\\data\\input.txt", sep=",", header=None).values
gmm = GMM(n_components=5).fit(input)
sampled = gmm.sample(input.shape[0], random_state=42)
original_label = gmm.predict(input)
generated_label = gmm.predict(sampled)
return sampled

当我检查 original_label 和 generated_label 时,每个集群中的样本数是不同的。

The number of elements in original_label: 
Cluster 1:0
Cluster 2:1761
Cluster 3:2024
Cluster 4:769
Cluster 5:0 

The number of elements in generated_label: 
Cluster 1:0
Cluster 2:1273
Cluster 3:739
Cluster 4:1140
Cluster 5:1402

我想从具有相同原始输入分布的 gmm 中采样数据。在这里,采样数据和原始数据的集群之间存在很大差异。你能帮我修一下吗?

4

1 回答 1

0

高斯混合模型是一种聚类方法。每个对象都属于每个集群,只是程度不同。

如果您将软簇密度相加,它们应该匹配得更紧密。(我建议您验证这一点。集群 5 中的巨大差异可能表明 sklearn 中存在问题)。

由于聚类重叠,生成满足 GMM 密度模型以及预测的硬标签的硬聚类通常是不可满足的。这表明“硬”标签不符合 GMM 的基本假设。

于 2018-01-07T10:05:43.133 回答