数据挖掘关于Kmeans算法的研究(含数据集)

  • 格式:doc
  • 大小:177.00 KB
  • 文档页数:22

下载文档原格式

  / 22
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

浙江大学算法研究实验报告

数据挖掘

题目:K-means

目录

一、实验内容 (5)

二、实验目的 (7)

三、实验方法 (7)

3.1软、硬件环境说明 (7)

3.2实验数据说明 (7)

图3-1 (7)

3.3实验参数说明/软件正确性测试 (7)

四、算法描述 (9)

图4-1 (10)

五、算法实现 (11)

5.1主要数据结构描述 (11)

图5-1 (11)

5.2核心代码与关键技术说明 (11)

5.3算法流程图 (14)

六、实验结果 (15)

6.1实验结果说明 (15)

6.2实验结果比较 (21)

七、总结 (23)

一、 实验内容

实现K-means 算法,其中该算法介绍如下:

k-means 算法是根据聚类中的均值进行聚类划分的聚类算法。 输入:聚类个数k ,以及包含n 个数据对象的数据。 输出:满足方差最小标准的k 个聚类。 处理流程:

Step 1. 从n 个数据对象任意选择k 个对象作为初始聚类中心; Step 2. 根据每个聚类对象的均值(中心对象),计算每个对象与这些中心对象的距离,并根据最小距离重新对相应对象进行划分; Step 3. 重新计算每个(有变化)聚类的均值(中心对象) Step 4. 循环Step 2到Step 3直到每个聚类不再发生变化为止;

k-means 算法的工作过程说明如下:首先从n 个数据对象任意选择k 个对象作为初始聚类中心,而对于所剩下的其它对象,则根据它们与这些聚类中心的相似度(距离),分别将它们分配给与其最相似的(聚类中心所代表的)聚类。然后,再计算每个所获新聚类的聚类中心(该聚类中所有对象的均值),不断重复这一过程直到标准测度函数开始收敛为止。一般都采用均方差作为标准测度函数,具体定义如下:

2

1∑∑=∈-=k

i i

i

E C p m p (1)

其中E 为数据库中所有对象的均方差之和,p 为代表对象的空间中的一个点,m i 为聚类C i 的均值(p 和m i 均是多维的)。公式(1)所示的聚类标准,旨在使所获得的k 个聚类具有以下特点:各聚类本身尽可能的紧凑,而各聚类之间尽可能的分开。

重点要求:用于聚类的测试级不能仅为单独的一类属性,至少有两种属性值参与聚类。

二、实验目的

通过实现K-means算法,加深对课本上聚类算法的理解,并对数据集做出较高的要求,以期锻炼我们的搜索查找能力。最后自己实现K-means算法,可以加强我们的编程能力。

三、实验方法

3.1软、硬件环境说明

采用win7旗舰版(盗版)系统,用vs2010实现

3.2实验数据说明

实验数据,源于google的广告关键词推荐页面,在该页面输入关键词,会出现与该关键词相关的一些信息,包括月均搜索量,关键词价值等等,取出来在经过自己处理,就得到了我们需要的实验数据,包括关键词、月均搜索量、竞争力、估价以及关键词排名,包含两种属性。部分数据如下:

关键词月均搜索量竞争力建议出价排名

模拟股票700.1427.89194

股票交流300.1119.17160

股票交易系统300.1711.46101

股票交易5900.3131.86203

gupiao10000.0615.94137

股市投资200.29 2.8216

股票趋势200.11 6.9555

财经网19000.2213.38123

股票书500.0689.06246

图3-1

3.3实验参数说明/软件正确性测试

我采用了各种数据对程序进行测试,出现一些数组越界bug,修改后再次测试,无问题,测试通过。

四、算法描述

KMeans算法的基本思想是初始随机给定K个簇中心,按照最邻近原则把待分类样本点分到各个簇。然后按平均法重新计算各个簇的质心,从而确定新的簇心。一直迭代,直到簇心的移动距离小于某个给定的值。

K-Means聚类算法主要分为三个步骤:

(1)第一步是为待聚类的点寻找聚类中心

(2)第二步是计算每个点到聚类中心的距离,将每个点聚类到离该点最近

的聚类中去

(3)第三步是计算每个聚类中所有点的坐标平均值,并将这个平均值作为

新的聚类中心

反复执行(2)、(3),直到聚类中心不再进行大范围移动或者聚类次数达到要求为止

下图展示了对n个样本点进行K-means聚类的效果,这里k取2:

(a)未聚类的初始点集

(b)随机选取两个点作为聚类中心

(c)计算每个点到聚类中心的距离,并聚类到离该点最近的聚类中去

(d)计算每个聚类中所有点的坐标平均值,并将这个平均值作为新的聚类

中心

(e)重复(c),计算每个点到聚类中心的距离,并聚类到离该点最近的聚类

中去

(f)重复(d),计算每个聚类中所有点的坐标平均值,并将这个平均值作为

新的聚类中心

图4-1

五、算法实现

5.1主要数据结构描述

这里我建造了一个data的结构体,如下:

typedef vector Tuple;//存储每条数据记录

struct data

{

string s;//存储关键词

Tuple tup;//存储属性信息

};

图5-1

5.2核心代码与关键技术说明

5.2.1计算距离函数

此函数用于计算两个元祖之间的距离,对于每个元祖的属性值,对于数值型的属性值(X1,X2,X3,X i,X n),我们用Y i代替X i来进行归一化处理,其中Y i计算公式如下: