数据挖掘实验五 k-均值聚类算法
实验五、k-均值聚类算法
学院 计算机科学与软件学院
• 实验目的:
1.
2.
3.
4.
熟悉 VC++编程工具和 k-均值聚类算法。
在训练样本集上用 VC++编程工具编写用于 k-均值聚类的程序,对任
掌握距离计算方法和聚类的评价准则。
写出实验报告。
k-均值聚类
务 相关数据运行 k-均值聚类算法,调试实验。
• 实验原理:
1.
k-均值聚类是一种基于形心的划分技术,具体迭代的计算步骤如下:
1) 在属性向量空间随机产生 k 个形心坐标。
2) 分别计算数据集 D 中的每个数据对象 T
i
(1≤
i
≤n)到所有 k 个形心的距离度
量 Dist(
i
,
j
) (1≤
i
≤n, 1≤
j
≤k),并将数据对象 T
i
聚到最小距离度量的那一簇中。
3) 按照形心的定义计算每一簇的形心坐标,形成下一代的 k 个形心坐标。
4) 如果不满足终结条件,转到 2)继续迭代;否则结束。
1. 终止条件
终止条件可以是以下任何一个:
1)没有(或最小数目)对象被重新分配给不同的聚类。
2)没有(或最小数目)聚类中心再发生变化。
3)误差平方和局部最小。
• 实验内容
1、主要代码及解释
(1)//将数据进行簇归类
void new_cluster()
{
int i, j;
double min;
for(i = 0; i < k; i++) //初始化编号
td.cluster_num[i] = 0;
for(i = 0; i < size; i++){
int index = 0; //找出最小的欧几里德距离编号
min = data[i].distance[0];
1 / 4