Java 用kmeans寻找聚类的最远质心

Java 用kmeans寻找聚类的最远质心,java,k-means,centroid,Java,K Means,Centroid,下面是一个如何使用kmeans算法的示例: 在这个例子中,作者使用了“相距最远的两个个体(使用欧几里德距离度量)”作为初始质心 如果我想要的不是两个集群,而是10个呢! 如何选择前10个质心? 有没有办法选择相距最远的十个人? 或者我应该用另一种方式来选择它们 PS:我不认为使用randon选项对我来说是好的。此外,我一直在尝试使用前10个个体作为质心,但我正在寻找更好的方法来选择它们。简单地选择距离最远的K个实体作为初始质心是相当危险的。现实世界的数据集往往有异常值,根据您的方法,这些异常值将

下面是一个如何使用kmeans算法的示例:

在这个例子中,作者使用了“相距最远的两个个体(使用欧几里德距离度量)”作为初始质心

如果我想要的不是两个集群,而是10个呢! 如何选择前10个质心? 有没有办法选择相距最远的十个人? 或者我应该用另一种方式来选择它们


PS:我不认为使用randon选项对我来说是好的。此外,我一直在尝试使用前10个个体作为质心,但我正在寻找更好的方法来选择它们。

简单地选择距离最远的K个实体作为初始质心是相当危险的。现实世界的数据集往往有异常值,根据您的方法,这些异常值将被选为初始质心


K-Means有很多初始化算法,也许您想看看智能K-Means。

选择初始质心的最常用方法是使用kmeans++ . 具有理论性能保证


许多python集群包实现了这种初始化,比如mlpy、scipy KMeans。但是我不知道JAVA。

选择初始质心最常见的方法是什么?我想大多数人只是简单地运行K-Means多次(比如100次),然后选择K-Means输出最小的集群。如果您的数据集太大,无法多次运行K-Means,我建议您使用智能K-Means。我的数据集有69个元素,可以分成8个集群。如果我选择元素0、9、18、27、36、45、54和63作为第一个质心,Kmeans根据每个簇元素的平均值将这些质心重新组织6次,然后它们收敛。