c++ - 通过提供数据对象和中心点之间的距离来实现 k-medoids 算法

标签 c++ algorithm cluster-analysis data-mining k-means

我一直在尝试用 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/

相关文章:

C++ 通过 const 引用传递 const 指针

c++ - 基本 C++ 应用程序有额外的输出,那么它应该

open-source - 在哪里可以找到可靠的 K-medoid(不是 k-means)开源软件/工具?

python - DBSCAN 返回部分簇

python - 使用 PCA (Python) 可视化聚类结果

c++ - 如何销毁包含自引用指针的对象?

c++ - 不能使用c++在工厂模式中使用 map

python - 行系列中不完全匹配的搜索算法

algorithm - 以下情况应使用哪种排序算法?

algorithm - 在图中找到最小瓶颈路径