Python KMeans聚类不平衡数据

Python KMeans聚类不平衡数据,python,cluster-analysis,k-means,data-science,feature-engineering,Python,Cluster Analysis,K Means,Data Science,Feature Engineering,我有一组数据,包含50个特征(c1、c2、c3…),超过80k行 每行包含标准化数值(范围为0-1)。它实际上是一个标准化的虚拟变量,其中一些行只有很少的特征,3-4(即,如果没有值,则分配0)。大多数行具有大约10-20个特征 我使用KMeans对数据进行集群,总是产生一个包含大量成员的集群。经过分析,我注意到少于4个特征的行倾向于聚集在一起,这不是我想要的 是否存在平衡集群?产生平衡集群不是k-means目标的一部分。事实上,具有平衡簇的解决方案可以是任意坏的< /强>(只考虑具有重复的数据

我有一组数据,包含50个特征(c1、c2、c3…),超过80k行

每行包含标准化数值(范围为0-1)。它实际上是一个标准化的虚拟变量,其中一些行只有很少的特征,3-4(即,如果没有值,则分配0)。大多数行具有大约10-20个特征

我使用KMeans对数据进行集群,总是产生一个包含大量成员的集群。经过分析,我注意到少于4个特征的行倾向于聚集在一起,这不是我想要的


是否存在平衡集群?

产生平衡集群不是k-means目标的一部分。事实上,<强>具有平衡簇的解决方案可以是任意坏的< /强>(只考虑具有重复的数据集)。K-means最小化平方和,将这些对象放在一个簇中似乎是有益的

您看到的是在稀疏、非连续数据上使用k-means的典型效果。编码的分类变量、二进制变量和稀疏数据都不适合使用k均值。此外,您可能还需要仔细权衡变量


现在,一个可能改善结果的修补程序(至少是感知质量,因为我认为它在统计学上不会使结果更好)是将每个向量归一化为单位长度(欧几里德范数1)。这将强调具有少量非零项的行。您可能会更喜欢结果,但它们更难解释。

特征少于4个的行是否具有相同的对应特征。你有没有尝试过增加kNo的价值,它们有非常不同的特性。我使用肘部方法改变了K值,范围从50到100。显示集群所在的代码部分和输出。