k-means算法例题应用

简单介绍: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 数据
    数据集
    X Y
    A1 3 1
    A2 3 2
    A3 4 1
    A4 4 2
    A5 1 3
    A6 1 4
    A7 2 3
    A8 2 4
  • 2初始聚类中心分别为D1(0,4)和D2(3,3),计算各点到两中心的距离。

    距离表1
    D1(0,4) D2(3,3)
    A1(3,1) 4.242 2    
    A2(3,2) 3.605 1    
    A3(4,1) 5 2.236    
    A4(4,2) 4.472 1.414    
    A5(1,3) 1.414     2
    A6(1,4) 1     2.236
    A7(2,3) 2.236 1    
    A8(2,4) 2 1.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.166 0.5   
A6(1,4) 2.712 0.5   
A7(2,3) 1.301 1.118   
A8(2,4) 2.088 1.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.915 0.707    
    A6(1,4) 3.535 0.707    
    A7(2,3) 2.121 0.707    
    A8(2,4) 2.915 0.707    
  • 5根据上表分成两簇,{A1,A2,A3,A4},{A5,A6,A7,A8},和步骤四分簇一致,停止计算。

你可能感兴趣的:(机器学习,大数据,机器学习,算法)