You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

K-Medoid聚类算法迭代异常及结果确认求助

K-Medoid聚类算法迭代异常及结果确认求助

各位好,我现在在做k-medoids聚类的练习,遇到了迭代循环的问题,想请大家帮忙看看哪里出错了。

我的问题背景:用k-medoids算法对数据集$S$进行聚类,设置$k=2$,初始随机选取的medoids是${(1, 2), (2, 1)}$。数据集$S$如下(每行对应样本$x_1$到$x_7$):

样本$x_1$$x_2$
$x_1$12
$x_2$21
$x_3$13
$x_4$54
$x_5$63
$x_6$72
$x_7$61

我觉得自己的步骤是对的,但结果好像有问题,具体过程如下:

第一次迭代:初始聚类

  1. 计算每个样本到两个初始medoid的欧氏距离:
    • 到medoid $(1,2)$的距离(对应$x_1$到$x_7$):0, 1.41, 1, 4.47, 5.10, 6, 5.10
    • 到medoid $(2,1)$的距离(对应$x_1$到$x_7$):1.41, 0, 2.24, 4.24, 4.47, 5.10, 4
  2. 根据最小距离原则分配聚类,得到结果:
    • 聚类A:${(x_1,x_3)}$
    • 聚类B:${(x_2,x_4,x_5,x_6,x_7)}$

迭代时出现的循环问题

接下来我尝试更新medoid:在聚类A中选择能使簇内总距离最小的点作为新medoid,也就是$x_3=(1,3)$。然后重新计算所有样本到两个medoid($(1,3)$和$(2,1)$)的距离:

  • 到$(1,3)$的距离:1, 2.23, 0, 4.12, 5, 6.10, 5.40
  • 到$(2,1)$的距离:1.41, 0, 2.24, 4.24, 4.47, 5.10, 4

这次得到的聚类结果变成了:

  • 聚类A:${(x_1,x_3,x_4)}$
  • 聚类B:${(x_2,x_5,x_6,x_7)}$

如果我继续迭代,又会把聚类A的medoid换回$x_1=(1,2)$,这样就陷入了循环。我肯定哪里操作错了,因为我认为最终的聚类结果应该是第一次得到的${(x_1,x_3),(x_2,x_4,x_5,x_6,x_7)}$,想请教大家我哪里出问题了?

备注:内容来源于stack exchange,提问作者ClareB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 12:19:52