我有一组具有50个功能(c1,c2,c3 ...)的数据,具有超过80k行。
每行包含标准化的数值(范围为0-1)。它实际上是一个归一化的虚拟变量,其中某些行只有3-4个很少的特征(即,如果没有值,则分配0)。大多数行具有大约10-20个功能。
我使用KMeans对数据进行聚类,总是导致具有大量成员的聚类。经过分析,我注意到具有少于4个特征的行趋于聚集在一起,这不是我想要的。
无论如何,集群之间是否平衡?
最佳答案
产生平衡簇不是k-means目标的一部分。实际上,具有平衡集群的解决方案可能会很糟糕(只需考虑具有重复项的数据集)。 K均值最小化平方和,将这些对象放入一个群集似乎是有益的。
您所看到的是在稀疏,非连续数据上使用k均值的典型效果。编码的分类变量,二进制变量和稀疏数据仅不太适合均值的k均值使用。此外,您可能还需要仔细权重变量。
现在,一个可能会改善结果的修补程序(至少是感知的质量,因为我认为它在统计学上不会使它们更好),是将每个向量归一化为单位长度(欧几里得范数1)。这将强调那些具有很少非零条目的行。您可能会更喜欢结果,但是更难解释。
关于python - K表示聚类不平衡数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52253787/