使用k表示找到距离最远的质心

时间:2014-04-21 01:47:06

标签: java k-means centroid

以下是如何使用kmeans算法的示例:http://mnemstudio.org/clustering-k-means-example-1.htm

在这个例子中,作者使用了最初的质心"最远的两个人(使用欧几里德距离测量)"正如所说的那样。

如果我不想要两个群集,那么10! 如何选择前10个质心? 有没有办法选择最远的十个人? 或者我应该用其他方式来选择它们。

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

选择初始质心最常用的方法是使用kmeans ++ http://en.wikipedia.org/wiki/K-means%2B%2B 。具有理论性能保证。

http://ilpubs.stanford.edu:8090/778/1/2006-13.pdf

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