k均值聚类算法

算法描述

输入:簇的数目k和包含n个对象的数据库。 
输出:k个簇,使平方误差准则最小。 
算法步骤:  
1.为每个聚类确定一个初始聚类中心,这样就有K 个初始聚类中心。  
2.将样本集中的样本按照最小距离原则分配到最邻近聚类   
3.使用每个聚类中的样本均值作为新的聚类中心。 
4.重复步骤2.3直到聚类中心不再变化。 
5.结束,得到K个聚类 

《k均值聚类算法》

伪代码

创建k个点作为起始质心(经常随机选择)
当任意一个点的簇分配结果发生改变时
    对于数据集中的每个数据点
        对每个质心
            计算质心于数据点之间的距离
        将数据点分配到距其最近的簇
    对于每个簇,计算簇中所有点的均值并将均值作为质心

优点:容易实现
缺点:
K 是事先给定的,这个 K 值的选定是非常难以估计,常采用遗传算法(GA)进行初始化来改进
存在噪点时,可能收敛到局部最小值
在大规模的数据集上收敛较慢

适用数据类型:数值型数据

实例

题目

假设数据挖掘的任务是将如下的八个点(用(x,y)代表位置)聚类为三个类。

A1(2,10), A2(2,5), A3(8,4), B1(5,8), B2(7,5), B3(6,4), C1(1,2), C2(4,9)

距离函数是Euclidean函数。假设初始我们选择A1,B1,和C1为每个簇的中心,用k-means算法来给出

  1. 在第一次循环执行后的三个簇中心
  2. 最后的三个簇

解答

《k均值聚类算法》

1、计算各点到初始聚类中心的距离,划分到距离最近的簇中去。

2、第一轮执行后的三个簇:
{A1}
{B1,A3,B2,B3,C2}
{C1,A2}
则其聚类中心为:
(2,10)(6,6)(1.5,3.5)
3、最后的三个簇为:
{A1,C2 ,B1}
{A3,B2,B3}
{C1,A2}

    原文作者:聚类算法
    原文地址: https://blog.csdn.net/u013611461/article/details/53635835
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞