在某些数据集上改进 K 均值

Improving K Means on some data sets

任何人都知道如何调整简单的 K 均值算法来处理 this form 的数据集。

此问题的一个可能解决方案是向您的数据集添加另一个维度,为此在两个维度之间进行拆分 类。

显然这在很多情况下并不适用,但如果您对数据应用了某种降维,那么它可能值得研究。

在仍然使用 k-means 的同时处理该形式数据的最直接方法是使用内核化版本的 k-means。 JSAT 库中存在它的 2 个实现(参见此处 https://github.com/EdwardRaff/JSAT/blob/67fe66db3955da9f4192bb8f7823d2aa6662fc6f/JSAT/src/jsat/clustering/kmeans/ElkanKernelKMeans.java

正如 Nicholas 所说,另一种选择是创建一个新特征 space,您可以在该特征上 运行 k-means。然而,这需要一些关于您将要聚类的数据类型的先验知识。

在那之后,你真的只需要转向不同的算法。 k-means 是一种简单的算法,它对世界做出简单的假设,当这些假设被严重违反时(非线性可分簇是这些假设之一),那么你只需要接受它并选择一个更合适的算法。