跳转到内容

K-means

一种广泛使用的无监督学习算法,主要用于将数据集分成若干个簇(cluster)。它的目标是通过最小化簇内数据点的差异,使得相似的对象被分到同一个簇中,而不同簇的对象尽可能不相似。

原理

以简单的二维数据为例,如下:

txt
有数据

1 2 3    6 7 8    10 11 12

step1:我们通过肉眼观察确定簇的个数(K),为3
step2:随机取K个点为中心点

1 2 3    6 7 8    10 11 12
↑   ↑    ↑

step3:计算每个点到中心点的距离,并把离的近的归一类

(1 2) (3) (6 7 8 10 11 12)
 ↑     ↑   ↑
 
step4:将中心点移动到每个簇的最中心

(1 2) (3) (6 7 8 10 11 12)
 ↑     ↑         ↑
 
step5:重复step3

(1 2) (3 6 7) (8 10 11 12)
 ↑     ↑         ↑
 
step6:重复step4

(1 2) (3 6 7) (8 10 11 12)
 ↑       ↑       ↑
 
step7:重复step3

(1 2 3) (6 7 8) (10 11 12)
 ↑       ↑       ↑
 
step8:重复step4

(1 2 3) (6 7 8) (10 11 12)
   ↑       ↑        ↑
   
完成

图解

image-20250625172025351

1. 选取中心点

2. 分配每个点