k表示产生空簇

时间:2015-03-24 22:07:36

标签: k-means

我已经实现了http://faculty.uscupstate.edu/atzacheva/SHIM450/KMeansExample.doc

中描述的k均值聚类算法

对于某些数据集,我发现生成的簇数并不总是等于初始k。这是预期的吗?

我认为可以预期,每次迭代后,每个数据点都会添加到最近的群集中,但这并不能保证所有群集都会被填充。每次迭代后,每个群集都会重新初始化,因此某些群集可能与点不够接近,无法添加任何点。

2 个答案:

答案 0 :(得分:2)

本文描述了k均值的空簇可以出现http://www.academypublisher.com/ijrte/vol01/no01/ijrte0101220226.pdf

  

k-means算法的一个主要问题是它可能   根据初始中心向量产生空簇。对于静态   执行k-means,这个问题被认为是微不足道的   可以通过多次执行算法来解决。

答案 1 :(得分:0)

在图像处理方面,我遇到了与您相同的问题。希望我的经验能给您一些提示...

我正在尝试对原始大小为720 * 1280,簇数为10的图像进行kmeans算法。

但是,我觉得它太大了,所以我(愚蠢地)使用了高斯金字塔将该图像压缩为144 * 256。

然后,在运行kmeans并达到收敛之后,我发现几乎还有5个集群集是空的。

我试图修改算法,例如:如果簇为空,那么我将分配一个新像素作为中心,然后重试,或者划分最大的簇集。

最后,我意识到如果有空集群,这仅表示集群编号是否不正确(如您所见,与基于密度的集群不同,k-means需要您将集群编号分配为参数,并且值很重要。)或者您使用的数据集不够大。

所以我使用原始图像作为输入,现在我发现簇已满。

最后,我建议您尝试使用更大的样本量数据,或者只是更改您分配的群集编号。