K-means算法计算示例:数据点聚类过程详解
假设有以下数据集:
| 数据点 | X | Y | | ------ | --- | --- | | A | 2 | 10 | | B | 2 | 5 | | C | 8 | 4 | | D | 5 | 8 | | E | 7 | 5 | | F | 6 | 4 |
我们希望将这些数据点分为两个簇。我们可以随机选择两个数据点作为初始质心,比如说我们选择 A 和 C。
第一轮迭代:
我们计算每个数据点到两个质心的距离,比如说数据点 B 到质心 A 的距离为:
sqrt((2-2)^2 + (5-10)^2) = 5
同样地,数据点 B 到质心 C 的距离为:
sqrt((2-8)^2 + (5-4)^2) = 6.32
我们将数据点 B 分配到距离更近的质心 A 所在的簇中。
同样地,我们计算其他数据点到两个质心的距离,将它们分配到距离更近的质心所在的簇中。
现在,我们重新计算每个簇的质心。对于簇 1,它包含了数据点 A 和 B,所以它的质心为:
((2+2)/2, (10+5)/2) = (2, 7.5)
对于簇 2,它包含了数据点 C、D、E 和 F,所以它的质心为:
((8+5+7+6)/4, (4+8+5+4)/4) = (6.5, 5.25)
第二轮迭代:
我们再次计算每个数据点到两个质心的距离,将它们分配到距离更近的质心所在的簇中。
现在,我们重新计算每个簇的质心。
对于簇 1,它包含了数据点 A、B 和 D,所以它的质心为:
((2+2+5)/3, (10+5+8)/3) = (3, 7.67)
对于簇 2,它包含了数据点 C、E 和 F,所以它的质心为:
((8+7+6)/3, (4+5+4)/3) = (7, 4.33)
第三轮迭代:
我们再次计算每个数据点到两个质心的距离,将它们分配到距离更近的质心所在的簇中。
现在,我们重新计算每个簇的质心。
对于簇 1,它包含了数据点 A、B 和 D,所以它的质心为:
((2+2+5)/3, (10+5+8)/3) = (3, 7.67)
对于簇 2,它包含了数据点 C、E 和 F,所以它的质心为:
((8+7+6)/3, (4+5+4)/3) = (7, 4.33)
现在,我们可以看到簇的分配和质心的位置已经不再变化了,所以我们可以停止迭代。最终的簇分配和质心位置如下:
| 数据点 | 簇 | X | Y | | ------ | --- | --- | --- | | A | 1 | 2 | 10 | | B | 1 | 2 | 5 | | C | 2 | 8 | 4 | | D | 1 | 5 | 8 | | E | 2 | 7 | 5 | | F | 2 | 6 | 4 |
| 簇 | X | Y | | --- | --- | --- | | 1 | 3 | 7.67 | | 2 | 7 | 4.33 |
原文地址: https://www.cveoy.top/t/topic/fYOm 著作权归作者所有。请勿转载和采集!