文章目录
- 一、 K-Means 聚类算法流程
- 二、 一维数据的 K-Means 聚类
- 1、 第一次迭代
- 2、 第二次迭代
- 3、 第三次迭代
- 4、 第四次迭代
参考博客 :
- 【数据挖掘】聚类算法 简介 ( 基于划分的聚类方法 | 基于层次的聚类方法 | 基于密度的聚类方法 | 基于方格的聚类方法 | 基于模型的聚类方法 )
- 【数据挖掘】基于划分的聚类方法 ( K-Means 算法简介 | K-Means 算法步骤 | K-Means 图示 )
- 【数据挖掘】K-Means 一维数据聚类分析示例
- 【数据挖掘】K-Means 二维数据聚类分析 ( K-Means 迭代总结 | K-Means 初始中心点选择方案 | K-Means 算法优缺点 | K-Means 算法变种 )
一、 K-Means 聚类算法流程
K-Means 算法 步骤 : 给定数据集 X \rm X X , 该数据集有 n \rm n n 个样本 , 将其分成 K \rm K K 个聚类 ;
① 中心点初始化 : 为 K \rm K K 个聚类分组选择初始的中心点 , 这些中心点称为 Means ; 可以依据经验 , 也可以随意选择 ;
② 计算距离 : 计算 n \rm n n 个对象与 K \rm K K 个中心点 的距离 ; ( 共计算 n × K \rm n \times K n×K 次 )
③ 聚类分组 : 每个对象与 K \rm K K 个中心点的值已计算出 , 将每个对象分配给距离其最近的中心点对应的聚类 ;
④ 计算中心点 : 根据聚类分组中的样本 , 计算每个聚类的中心点 ;
⑤ 迭代直至收敛 : 迭代执行 ② ③ ④ 步骤 , 直到 聚类算法收敛 , 即 中心点 和 分组 经过多少次迭代都不再改变 , 也就是本次计算的中心点与上一次的中心点一样 ;
给定 一组样本 , 和 一组中心点 , 计算 所有样本 到 所有中心点 的距离 , 给样本 分组 , 计算分好组的样本的中心点 , 重新计算所有样本到所有中心点的距离 , 继续进行分组 , 一直迭代执行上述操作 , 直到连续两次样本分组不再变化 ;
二、 一维数据的 K-Means 聚类
给定数据集 { 1 , 3 , 5 , 8 , 9 , 11 , 12 , 13 , 37 , 43 , 45 , 49 , 51 , 65 } \rm \{ 1,3,5,8,9,11,12,13,37,43,45,49,51,65 \} {1,3,5,8,9,11,12,13,37,43,45,49,51,65} , 初始中心点 { 1 , 20 , 40 } \rm \{ 1, 20, 40 \} {1,20,40} , 使用 K-Means 算法对数据集进行聚类分析 ;
1、 第一次迭代
第一次迭代 : 计算每个样本值与每个中心点的距离 , 将样本分类到最近的中心点所在的分组 , 计算每个分组新的中心值 ;
距离计算示例 : 1 1 1 与 20 20 20 的距离就是差值的绝对值 19 19 19 ;
样本值 | ||||
---|---|---|---|---|
聚类 | C 1 C_1 C1 | C 2 C_2 C2 | C 3 C_3 C3 | |
中心值 | 1 1 1 | 20 20 20 | 40 40 40 | |
P 1 P_{1} P1 | 1 1 1 | 0 0 0 | 19 19 19 | 39 39 39 |
P 2 P_2 P2 | 3 3 3 | 2 2 2 | 17 17 17 | 37 37 37 |
P 3 P_3 P3 | 5 5 5 | 4 4 4 | 15 15 15 | 35 35 35 |
P 4 P_4 P4 | 8 8 8 | 7 7 7 | 12 12 12 | 32 32 32 |
P 5 P_5 P5 | 9 9 9 | 8 8 8 | 11 11 11 | 31 31 31 |
P 6 P_6 P6 | 11 11 11 | 10 10 10 | 9 9 9 | 29 29 29 |
P 7 P_7 P7 | 12 12 12 | 11 11 11 | 8 8 8 | 28 28 28 |
P 8 P_8 P8 | 13 13 13 | 12 12 12 | 7 7 7 | 27 27 27 |
P 9 P_9 P9 | 37 37 37 | 36 36 36 | 17 17 17 | 3 3 3 |
P 10 P_{10} P10 | 43 43 43 | 42 42 42 | 23 23 23 | 3 3 3 |
P 11 P_{11} P11 | 45 45 45 | 44 44 44 | 25 25 25 | 5 5 5 |
P 12 P_{12} P12 | 49 49 49 | 48 48 48 | 29 29 29 | 9 9 9 |
P 13 P_{13} P13 | 51 51 51 | 50 50 50 | 31 31 31 | 11 11 11 |
P 14 P_{14} P14 | 65 65 65 | 64 64 64 | 45 45 45 | 25 25 25 |
重新分组 :
K 1 = { 1 , 3 , 5 , 8 , 9 } \rm K_1 = \{ 1 , 3 , 5 , 8, 9 \} K1={1,3,5,8,9}
K 2 = { 11 , 12 , 13 } \rm K_2 = \{ 11 , 12 , 13 \} K2={11,12,13}
K 3 = { 37 , 43 , 45 , 49 , 51 , 65 } \rm K_3 = \{ 37 , 43 , 45 , 49 , 51 , 65 \} K3={37,43,45,49,51,65}
新的中心点计算过程 :
C 1 = 1 + 3 + 5 + 8 + 9 5 = 5 \rm C_1 = \cfrac{1 + 3 + 5 + 8 + 9}{5} = 5 C1=51+3+5+8+9=5
C 2 = 11 + 12 + 13 3 = 12 \rm C_2 = \cfrac{11 + 12 + 13}{3} = 12 C2=311+12+13=12
C 3 = 37 + 43 + 45 + 49 + 51 + 65 6 = 48 \rm C_3 = \cfrac{37 + 43 + 45 + 49 + 51 + 65}{6} = 48 C3=637+43+45+49+51+65=48
2、 第二次迭代
第二次迭代 : 计算每个样本值与每个中心点的距离 , 将样本分类到最近的中心点所在的分组 , 计算每个分组新的中心值 ;
年龄 | ||||
---|---|---|---|---|
聚类 | C 1 C_1 C1 | C 2 C_2 C2 | C 3 C_3 C3 | |
中心值 | 5 5 5 | 12 12 12 | 48 48 48 | |
P 1 P_{1} P1 | 1 1 1 | 4 4 4 | 11 11 11 | 47 47 47 |
P 2 P_2 P2 | 3 3 3 | 2 2 2 | 9 9 9 | 45 45 45 |
P 3 P_3 P3 | 5 5 5 | 0 0 0 | 7 7 7 | 43 43 43 |
P 4 P_4 P4 | 8 8 8 | 3 3 3 | 4 4 4 | 40 40 40 |
P 5 P_5 P5 | 9 9 9 | 4 4 4 | 3 3 3 | 39 39 39 |
P 6 P_6 P6 | 11 11 11 | 6 6 6 | 1 1 1 | 37 37 37 |
P 7 P_7 P7 | 12 12 12 | 7 7 7 | 0 0 0 | 36 36 36 |
P 8 P_8 P8 | 13 13 13 | 8 8 8 | 1 1 1 | 35 35 35 |
P 9 P_9 P9 | 37 37 37 | 25 25 25 | 17 17 17 | 11 11 11 |
P 10 P_{10} P10 | 43 43 43 | 38 38 38 | 31 31 31 | 5 5 5 |
P 11 P_{11} P11 | 45 45 45 | 40 40 40 | 33 33 33 | 3 3 3 |
P 12 P_{12} P12 | 49 49 49 | 44 44 44 | 37 37 37 | 1 1 1 |
P 13 P_{13} P13 | 51 51 51 | 46 46 46 | 39 39 39 | 3 3 3 |
P 14 P_{14} P14 | 65 65 65 | 60 60 60 | 53 53 53 | 17 17 17 |
重新分组 :
K 1 = { 1 , 3 , 5 , 8 } \rm K_1 = \{ 1 , 3 , 5 , 8 \} K1={1,3,5,8}
K 2 = { 9 , 11 , 12 , 13 } \rm K_2 = \{ 9, 11 , 12 , 13 \} K2={9,11,12,13}
K 3 = { 37 , 43 , 45 , 49 , 51 , 65 } \rm K_3 = \{ 37 , 43 , 45 , 49 , 51 , 65 \} K3={37,43,45,49,51,65}
新的中心点计算过程 :
C 1 = 1 + 3 + 5 + 8 5 = 4 \rm C_1 = \cfrac{1 + 3 + 5 + 8 }{5} = 4 C1=51+3+5+8=4
C 2 = 9 + 11 + 12 + 13 3 = 11 \rm C_2 = \cfrac{9 + 11 + 12 + 13}{3} = 11 C2=39+11+12+13=11
C 3 = 37 + 43 + 45 + 49 + 51 + 65 6 = 48 \rm C_3 = \cfrac{37 + 43 + 45 + 49 + 51 + 65}{6} = 48 C3=637+43+45+49+51+65=48
3、 第三次迭代
第三次迭代 : 计算每个样本值与每个中心点的距离 , 将样本分类到最近的中心点所在的分组 , 计算每个分组新的中心值 ;
年龄 | ||||
---|---|---|---|---|
聚类 | C 1 C_1 C1 | C 2 C_2 C2 | C 3 C_3 C3 | |
中心值 | 4 4 4 | 11 11 11 | 48 48 48 | |
P 1 P_{1} P1 | 1 1 1 | 3 3 3 | 10 10 10 | 47 47 47 |
P 2 P_2 P2 | 3 3 3 | 1 1 1 | 8 8 8 | 45 45 45 |
P 3 P_3 P3 | 5 5 5 | 1 1 1 | 6 6 6 | 43 43 43 |
P 4 P_4 P4 | 8 8 8 | 4 4 4 | 3 3 3 | 40 40 40 |
P 5 P_5 P5 | 9 9 9 | 5 5 5 | 2 2 2 | 39 39 39 |
P 6 P_6 P6 | 11 11 11 | 7 7 7 | 0 0 0 | 37 37 37 |
P 7 P_7 P7 | 12 12 12 | 8 8 8 | 1 1 1 | 36 36 36 |
P 8 P_8 P8 | 13 13 13 | 9 9 9 | 2 2 2 | 35 35 35 |
P 9 P_9 P9 | 37 37 37 | 33 33 33 | 26 26 26 | 11 11 11 |
P 10 P_{10} P10 | 43 43 43 | 39 39 39 | 32 32 32 | 5 5 5 |
P 11 P_{11} P11 | 45 45 45 | 41 41 41 | 34 34 34 | 3 3 3 |
P 12 P_{12} P12 | 49 49 49 | 45 45 45 | 38 38 38 | 1 1 1 |
P 13 P_{13} P13 | 51 51 51 | 47 47 47 | 40 40 40 | 3 3 3 |
P 14 P_{14} P14 | 65 65 65 | 61 61 61 | 54 54 54 | 17 17 17 |
重新分组 :
K 1 = { 1 , 3 , 5 } \rm K_1 = \{ 1 , 3 , 5 \} K1={1,3,5}
K 2 = { 8 , 9 , 11 , 12 , 13 } \rm K_2 = \{ 8, 9, 11 , 12 , 13 \} K2={8,9,11,12,13}
K 3 = { 37 , 43 , 45 , 49 , 51 , 65 } \rm K_3 = \{ 37 , 43 , 45 , 49 , 51 , 65 \} K3={37,43,45,49,51,65}
新的中心点计算过程 :
C 1 = 1 + 3 + 5 5 = 3 \rm C_1 = \cfrac{1 + 3 + 5 }{5} = 3 C1=51+3+5=3
C 2 = 8 + 9 + 11 + 12 + 13 3 = 10 \rm C_2 = \cfrac{8 + 9 + 11 + 12 + 13}{3} = 10 C2=38+9+11+12+13=10
C 3 = 37 + 43 + 45 + 49 + 51 + 65 6 = 48 \rm C_3 = \cfrac{37 + 43 + 45 + 49 + 51 + 65}{6} = 48 C3=637+43+45+49+51+65=48
4、 第四次迭代
第四次迭代 : 计算每个样本值与每个中心点的距离 , 将样本分类到最近的中心点所在的分组 , 计算每个分组新的中心值 ;
年龄 | ||||
---|---|---|---|---|
聚类 | C 1 C_1 C1 | C 2 C_2 C2 | C 3 C_3 C3 | |
中心值 | 4 4 4 | 11 11 11 | 48 48 48 | |
P 1 P_{1} P1 | 1 1 1 | 3 3 3 | 10 10 10 | 47 47 47 |
P 2 P_2 P2 | 3 3 3 | 1 1 1 | 8 8 8 | 45 45 45 |
P 3 P_3 P3 | 5 5 5 | 1 1 1 | 6 6 6 | 43 43 43 |
P 4 P_4 P4 | 8 8 8 | 4 4 4 | 3 3 3 | 40 40 40 |
P 5 P_5 P5 | 9 9 9 | 5 5 5 | 2 2 2 | 39 39 39 |
P 6 P_6 P6 | 11 11 11 | 7 7 7 | 0 0 0 | 37 37 37 |
P 7 P_7 P7 | 12 12 12 | 8 8 8 | 1 1 1 | 36 36 36 |
P 8 P_8 P8 | 13 13 13 | 9 9 9 | 2 2 2 | 35 35 35 |
P 9 P_9 P9 | 37 37 37 | 33 33 33 | 26 26 26 | 11 11 11 |
P 10 P_{10} P10 | 43 43 43 | 39 39 39 | 32 32 32 | 5 5 5 |
P 11 P_{11} P11 | 45 45 45 | 41 41 41 | 34 34 34 | 3 3 3 |
P 12 P_{12} P12 | 49 49 49 | 45 45 45 | 38 38 38 | 1 1 1 |
P 13 P_{13} P13 | 51 51 51 | 47 47 47 | 40 40 40 | 3 3 3 |
P 14 P_{14} P14 | 65 65 65 | 61 61 61 | 54 54 54 | 17 17 17 |
重新分组 :
K 1 = { 1 , 3 , 5 } \rm K_1 = \{ 1 , 3 , 5 \} K1={1,3,5}
K 2 = { 8 , 9 , 11 , 12 , 13 } \rm K_2 = \{ 8, 9, 11 , 12 , 13 \} K2={8,9,11,12,13}
K 3 = { 37 , 43 , 45 , 49 , 51 , 65 } \rm K_3 = \{ 37 , 43 , 45 , 49 , 51 , 65 \} K3={37,43,45,49,51,65}
新的中心点计算过程 :
C 1 = 1 + 3 + 5 5 = 3 \rm C_1 = \cfrac{1 + 3 + 5 }{5} = 3 C1=51+3+5=3
C 2 = 8 + 9 + 11 + 12 + 13 3 = 10 \rm C_2 = \cfrac{8 + 9 + 11 + 12 + 13}{3} = 10 C2=38+9+11+12+13=10
C 3 = 37 + 43 + 45 + 49 + 51 + 65 6 = 48 \rm C_3 = \cfrac{37 + 43 + 45 + 49 + 51 + 65}{6} = 48 C3=637+43+45+49+51+65=48
第四次迭代与第三次迭代值相同 , 因此第三次迭代的结果就是 K-Means 聚类算法最终结果 ;
详细解析参考 【数据挖掘】K-Means 一维数据聚类分析示例