聚类算法实验.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

聚类算法实验

1、数据集IrisDataSet

IrisDataSet是一个用于区分分析(discriminantanalysis)的多变量数据集。该数据集中的数据是由鸢尾属植物的三种花Setosa、Versicolor与Virginica的测量结果所组成,数据集中共包含150组数据信息,每一类别植物有50组数据。每种花的特征用5种属性描述:

萼片长度sepallength(厘米)

萼片宽度sepalwidth(厘米)

花瓣长度petallength(厘米)

花瓣宽度petalwidth(厘米)

⑤类 Setosa、Versicolor、Virginica

在数据集的分析文件中给出了该数据集的一些统计摘要,简要内容如下:

最小

最大

平均

类相关度

萼片长度

4.3

7.9

5.84

0.7826

萼片宽度

2.0

4.4

3.05

-0.4194

花瓣长度

1.0

6.9

3.76

0.9490

花瓣宽度

0.1

2.5

1.20

0.9565

2、数据挖掘——数据预处理

现实世界中数据大体上都是不完整,不一致的脏数据,无法直接进行数据挖掘,或挖掘结果差强人意。为了提前数据挖掘的质量产生了数据预处理技术。

数据预处理有多种方法:数据清理,数据集成,数据变换,数据归约等。这些数据处理技术在数据挖掘之前使用,大大提高了数据挖掘模式的质量,降低实际挖掘所需要的时间。

(1) 数据清理

首先是处理空缺值,比如:IrisDataSet中某一项数据的花瓣长度petallength项没有记录,就要对该项进行处理。然后是处理噪声数据,通过考察周围的值来平滑存储数据的值。最后是处理不一致数据。对以上三种流程的主要方法是纸上记录、人工的加以更正等。

(2) 数据集成

即由多个数据存储合并数据。

(3) 数据变换

将数据转换成适用于数据挖掘的形式。

(4) 数据归约

数据挖掘时往往数据量非常大,在少量数据上进行挖掘分析需要很长的时间,数据归约技术可以用来得到数据集的归约表示,它小得多,但仍然接近于保持原数据的完整性,并结果与归约前结果相同或几乎相同。

具体到本实验中,由于IrisDataSet提供的信息比较完善,每个数据对象都由4维的数据和1维的类型组成,这五个数据之间用了“,”隔开没有空缺值、噪声数据等。但是对于程序处理而言。存在无用的数据信息,就是数据原本所属的类,因为程序要做的是去计算数据对象的四个属性的具体取值,根据属性值来重新对数据进行分类。因此,对IrisDataSet的每一个数据对象来说,最后的类型数据是无用数据信息,在清理时可直接将其去除。

3、K-means算法

3.1算法描述

K-Means算法是聚类算法的一种,它通过计算样本数据点之间的逻辑距离来判断某个样本数据点属于哪一个簇,算法最终的目的是要把用于算法的样本数据点分配到K个簇中,使簇内的点有较大的相似度,而簇间的点有较小的相似度。K-Means中的K表示聚类中心的个数,在算法运行过程中,要反复扫描所有样本数据点,要计算每个非中心数据点与某个聚类中心点的距离,并将这个数据点归为与其距离最小的那个聚类中心对应的簇之中。每扫描一次就要重新计算每个聚类中心点的位置。当聚类中心点的位置变化在一定的阈值之内的时候停止处理,最后就可以得到K个簇,并且簇中每个样本数据点到本簇的中心的距离都小于到其它簇中心的距离。

3.2算法流程

(1) 从n个数据对象任意选择K个对象作为初始聚类中心;

(2) 循环(3)到(4)直到每个聚类变化都小于阈值为止;

(3)根据每个聚类对象的均值(中心对象),计算每个对象与这些中心对象的距离;并根据最小距离重新对相应对象进行划分;

(4)重新计算每个(有变化)聚类的均值(中心对象)。

3.3算法实现

3.3.1数据结构

该算法是用C++实现的,用到的数据定义如下:

#defineK3 //代表K个簇

#defineNUM150//代表n个数据

#defineDIM4 //代表每个数据有4维

doubledata[NUM][DIM]; //用来存储数据的二维数组

doubleminOffset=1e-10; 〃设置结束循环的阈值

doubleminOffset=1e-10; 〃设置结束循环的阈值

doublecurrentMaxOffset=9.9e+99;//记录当前的所有聚类中心和上一轮的所有聚类中心的距离差值的最大值

intclustersIndex[K][NUM];/佣来存储某个数据的编号在某一个聚类,建立索引

inttail[K]; 〃用来确定clustersIndex[K][NUM]中每个聚类的尾部

intclusterI

文档评论(0)

ld1350046 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档