【问题标题】:Finding the furthest distant centroids to cluster using kmeans使用 k 均值查找要聚类的最远距离质心
【发布时间】:2014-06-05 01:27:49
【问题描述】:

这里是一个如何使用kmeans算法的例子:http://mnemstudio.org/clustering-k-means-example-1.htm

在这个例子中,正如人们所说,作者使用“相距最远的两个人(使用欧几里得距离测量)”作为初始质心。

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

PS:在我的情况下,我不认为使用随机选择会很好。另外,我一直在尝试使用前 10 个个体作为质心,但我正在寻找更好的方法来选择它们。

【问题讨论】:

    标签: java k-means centroid


    【解决方案1】:

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

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

    【讨论】:

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

    选择初始质心最常用的方法是使用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。

    【讨论】:

      猜你喜欢
      • 2017-09-24
      • 2017-03-26
      • 2013-07-28
      • 2011-07-21
      • 2018-12-20
      • 2018-07-02
      • 2016-06-11
      • 1970-01-01
      • 2013-04-30
      相关资源
      最近更新 更多