简单介绍:k-means 算法是一个聚类的算法 。属于无监督学习算法,也是就样本没有label(标签),然后根据某种规则进行“分割”, 把相同的或者相近的放在一起。

算法缺点:不能帮助我们自动分类,需要指定。在很多实际应用当中,很难知道数据是什么分布的,应该分成几类比较好。这也是k-means自身的一个缺陷。

在这里K就是我们想要分割的的聚类的个数。

算法步骤

  • 先定义总共有多少个类/簇(cluster)
  • 将每个簇心(cluster centers)随机定在一个点上
  • 将每个数据点关联到最近簇中心所属的簇上
  • 对于每一个簇找到其所有关联点的中心点(取每一个点坐标的平均值)
  • 将上述点变为新的簇心
  • 不停重复,直到每个簇所拥有的点不变

例题:

  • 假设有如下8个点:(3,1),(3,2),(4,1),(4,2),(1,3),(1,4),(2,3),(2,4)。使用K-means算法对其进行聚类。设初始聚类中心分别为(0,4)和(3,3)。请写出详细的计算过程。
  • 过程如下:
  • 1 数据
    数据集
    XY
    A131
    A232
    A341
    A442
    A513
    A614
    A723
    A824
  • 2初始聚类中心分别为D1(0,4)和D2(3,3),计算各点到两中心的距离。

    距离表1
    D1(0,4)D2(3,3)
    A1(3,1)4.2422    
    A2(3,2)3.6051    
    A3(4,1)52.236    
    A4(4,2)4.4721.414    
    A5(1,3)1.414    2
    A6(1,4)1    2.236
    A7(2,3)2.2361    
    A8(2,4)21.414    
  • 3根据上表分成两簇,{A1,A2,A3,A4,A7,A8},{A5,A6}。重新计算新的聚类中心D3,D4。并计算新的距离表。

  • D3=(3+3+4+4+2+2)/6,(1+2+1+2+3+4)/6 = (3,2.167)

  • D4=(1+1)/2,(3+4)/2 = (1,3.5)

距离表2
D3(3, 2.167)D4(1,3.5)
A1(3,1)1.167    3.201
A2(3,2)0.167    2,5
A3(4,1)1.536   3.905
A4(4,2)1.013   3.354
A5(1,3)2.1660.5   
A6(1,4)2.7120.5   
A7(2,3)1.3011.118   
A8(2,4)2.0881.118   

  • 4根据上表分成两簇,{A1,A2,A3,A4},{A5,A6,A7,A8}。重新计算新的聚类中心D5,D6。并计算新的距离表。

  • D5=(3+3+4+4)/4,(1+2+1+2)/4 = (3.5,1.5)

  • D6=(1+1+2+2)/4,(3+4+3+4)/4 = (1.5,3.5)

    距离表3
    D5(3.5,1.5)D6(1.5,3.5)
    A1(3,1)0.707    2.915
    A2(3,2)0.707    2.121
    A3(4,1)0.707    3.535
    A4(4,2)0.707    2.915
    A5(1,3)2.9150.707    
    A6(1,4)3.5350.707    
    A7(2,3)2.1210.707    
    A8(2,4)2.9150.707    
  • 5根据上表分成两簇,{A1,A2,A3,A4},{A5,A6,A7,A8},和步骤四分簇一致,停止计算。

Logo

学大模型,用大模型上飞桨星河社区!每天8点V100G算力免费领!免费领取ERNIE 4.0 100w Token >>>

更多推荐