改进聚类分离的替代方法?
您的数据似乎不容易分离。一般来说,可以应用某种转换来分离每个类的分布。原则上,拥有可用标签使得学习这种转换成为可能(如评论中提到的@Emre)。但是,您的特定数据集存在一些问题。1)您似乎没有很多数据点(除非您只绘制了一个小子集)。这将限制您进行非常简单的转换(否则您可能会严重过度拟合)。2)这些点只是重叠。转换只能基于其输入工作,如果坐标无法区分,则无能为力。在最好的情况下,您可能能够将左下方的绿松石簇和黄色点从主质量拉得更远,但其余的点几乎是混合在一起的。任何可以设法将它们在训练数据中分离的转换都将非常复杂,并且可能仅反映样本噪声(即它可能会完全过拟合,并且不能推广到新数据)。
理想的做法是找到/测量其他(相关)变量。在这种情况下,类可能在更高维空间中变得可分离。例如,想象添加第三个轴,红点在蓝点上方“升起”。
你忘记了最重要的一步。
预处理。
看看轴。以相同的方式缩放它们,您将意识到您的 y 轴的影响为零。您的数据确实看起来像这个压缩切片:
![]()
不要盲目地运行集群。您的工作可能 70% 弄清楚如何充分预处理您的数据,10% 进行聚类,20% 了解结果。
不要低估预处理的难度。您使用 k-means 的方式是假设 1 加仑水 = 1 秒。这个假设可能是错误的......
最后但同样重要的是:既然你有标签,为什么要使用聚类呢?
聚类不能固有地提取标记类。如果您有标签,那么您应该使用带有监督算法的标签。任何聚类都没有理由与预先提供的类别标签一致。想象一个完全均匀分布的数据集。可以为该数据具有非常任意的类标签(您甚至可以限制为任意凸区域)。对于完美均匀分布的数据,您应该期望什么样的聚类结果?除了偶然之外,是否有任何理由能够匹配任何特定的类别标签?聚类对应于数据集的分布属性。除非类标签碰巧对齐有了这些分布属性(并且没有理由应该这样做),聚类就无法恢复标签。

