C均值聚类算法与分级聚类算法的聚类分析
一、实验目的
- 理解聚类的整体思想,了解聚类的一般方法;
- 掌握 C-means与分级聚类算法算法思想及原理,并能够熟练运用这些算法进行聚类分析;
- 能够分析二者的优缺点
二、实验内容
- 采用C均值聚类算法对男女生样本数据中的身高、体重2个特征进行聚类分析,考察不同的类别初始值以及类别数对聚类结果的影响,并以友好的方式图示化结果。
- 采用分级聚类算法对男女生样本数据进行聚类分析。尝试采用身高,体重2个特征进行聚类,并以友好的方式图示化结果。
三、实验原理
3.1 C-means聚类算法
3.1.1算法原理
C-means,常称作K-means算法,是基于距离的聚类算法。采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为类簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标。其基本思想:取定c 类,选取c 个初始聚类中心即 , 即代表点 。按最小距离原则将各样本分配到离代表点最近的一类中 ,不断重新计算类中心 , 调整 各样本类别,最终使聚类准则函数 Je 最小。算法采用误差平方和准则函数作为聚类准则函数。
①用样本间的距离(欧式距离)作为相似性度量
②用各类样本与类均值间的平方误差和作为聚类准则
定义准则函数:
,其中:
是常用的聚类准则函数 , 表示N个样本聚类成c 类时,所产生的总误差的平方和 , 其值取决于c 个聚类中心。
3.1.2 C-means聚类算法流程(迭代优化)
输入:样本数据集D,聚类簇数c;输出:各类簇的集合
步骤:初始化每个簇的均值向量
repeat:
a.(更新)簇划分;
b. 计算每个簇的均值向量
until 当前均值向量均未更新
3.1.3 C-means聚类算法伪代码
输入:样本集D={x_1,x_2,...,x_n};聚类簇数c
过程:
1:从D中随机选择c个样本作为初始均值向量{u_1,u_2,...,u_c}
2:repeat
3:令C_i=Ø(1≤i≤c)
4:for j = 1,...,n do
5: 计算样本x_j与各均值向量u_i(1≤i≤c)的距离:d_ji = ||x_j-u_i||2;
6: 根据距离最近的均值向量将x_j归入该簇
7:end for
8:for i = 1,...,c do
9: 计算新的均值向量u'_i
10: if u'_i ≠ u_i then
11: 将当前均值向量u_i更新为u'_i
12: else
13: 保持当前均值向量不变
14: end if
15:end for
16:until 当前所有均值向量不再更新
17:return 簇划分结果
输出:簇划分C={C_1,C_2,...,C_c}