我一直在尝试用 C++ 实现 k-medoids。 到目前为止,我已经想出通过提供簇数(或种子数)来实现 k-medoids,as described in Wikipedia's k-medoids page.
现在,我要做的是通过提供距离而不是簇数来实现它。
让我画一幅画。两个圆圈代表一个簇,点是数据对象。 C1 和 C2 是种子(中心点)。
例如,如果您提供“8 英里”,则上图中的每条绿线都必须等于或小于 8 英里。我花了很多时间来搜索如何通过指示种子数而不是距离来实现 k-medoids。
如果您能提供任何建议,我将不胜感激。 (我说我使用的是 C++,但编程语言本身并不重要,因为我只关心算法。)
最佳答案
如果您限制最大距离,则您进行的是层次聚类(更准确地说,是通过聚类树进行一次切割),而不是 k-medoids。
使用距离矩阵也很常见。
关于c++ - 通过提供数据对象和中心点之间的距离来实现 k-medoids 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30409391/