基于MapReduce的K-Means并行算法设计.doc

基于MapReduce的K-Means并行算法设计.doc

ID:53117743

大小:72.70 KB

页数:24页

时间:2020-04-01

基于MapReduce的K-Means并行算法设计.doc_第1页
基于MapReduce的K-Means并行算法设计.doc_第2页
基于MapReduce的K-Means并行算法设计.doc_第3页
基于MapReduce的K-Means并行算法设计.doc_第4页
基于MapReduce的K-Means并行算法设计.doc_第5页
资源描述:

《基于MapReduce的K-Means并行算法设计.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、.基于MapReduce的K-Means并行算法设计目录一、实验设计21.实验说明22.算法说明2(1).聚类2(2).基于划分的聚类方法2(3).K-Means算法2(4).MapReduce并行化聚类算法设计思路33.类说明3(1).Instance3(2).Cluster4(3).EuclideanDistance4(4).RandomClusterGenerator4(5).KMeans4(6).KmeansCluster4(7).KMeansDriver5二、实验结果说明51.实验设置52.源数据点63.聚类结果7三、性能和不足7四、源程序81.Instance

2、类82.Cluster类103.EuclideanDistance类124.PageRankDriver类125.KMeans类156.KMeansCluster类197.KMeansDriver类21五、心得体会23..一、实验设计1.实验说明在Eclipse环境下编写实现k-means算法。2.算法说明(1).聚类将给定的多个对象分成若干组,组内的各个对象是相似的,组间的对象是不相似的。进行划分的过程就是聚类过程,划分后的组称为簇(cluster)。几种聚类方法:基于划分的方法;基于层次的方法;基于密度的方法;......(2).基于划分的聚类方法给定N个对象,构造K

3、个分组,每个分组就代表一个聚类。K个分组满足以下条件:(1)每个分组至少包含一个对象;(2)每个对象属于且仅属于一个分组。K-Means算法是最常见和典型的基于划分的聚类方法(3).K-Means算法输入:待聚类的N个数据点,期望生成的聚类的个数K输出:K个聚类算法描述:选出K个点作为初始的clustercenterLoop:对输入中的每一个点p:{..计算p到各个cluster的距离;将p归入最近的cluster;}重新计算各个cluster的中心如果不满足停止条件,gotoLoop;否则,停止(1).MapReduce并行化聚类算法设计思路将所有的数据分布到不同的Ma

4、pReduce节点上,每个节点只对自己的数据进行计算。每个Map节点能够读取上一次迭代生成的clustercenters,并判断自己的各个数据点应该属于哪一个cluster。Reduce节点综合每个属于每个cluster的数据点,计算出新的clustercenters。每一个节点需要访问如下的全局文件:当前的迭代计数和K个表示不同聚类中心的如下的数据结构:{clusteridclustercenter属于该clustercenter的数据点的个数}这是唯一的全局文件。1.类说明(1).Instance该类对应文件中原始数据点的格式,以ArrayList存放数据点的各个分量

5、。需要编写加法,乘法,除法函数,用于计算簇中心:簇中所有点相加/簇中数据点的个数。..如果是在原有的簇中追加一个数据点,则用(簇中心点*簇中数据点个数+新的数据点)/(簇中数据点个数+1)。(1).Cluster该类记录簇的信息<簇的id,属于该簇的数据点的个数,簇中心>各个节点共享的全局信息,记录每次划分的簇的信息。(2).EuclideanDistance计算欧式距离,通过计算数据点与各个簇中心的距离,选择最小的欧式距离对应的簇中心作为该数据点属于的簇。(3).RandomClusterGenerator该类用于初始时生成k个簇中心,一开始将读入的每个节点作为簇中心,

6、并为其分配一个ID,当达到k个时,以1/(1+k)的概率返回一个[0,k-1]中的正整数,将其对应的簇ID的簇中心替换。(4).KMeans该类即是kmeans算法的实现。它的mapper类应该读入所有的簇中心的信息——kclusters。应在setup()时将之前计算的簇中心读入,作为全局文件。map()所要做的是,读取每个数据点寻找离该点最近的簇id,通过计算欧式距离,选择距离最小的那个簇中心,输出的格式是。它的combiner类将同一个节点的数据点各个簇计算新的簇中心。簇中所有点相加/簇中数据点的个数=新的簇中心。它的redu

7、cer类将不同节点的计算结果汇总,计算全局的新的簇中心。(5).KmeansCluster该类做的工作其实与KMeans类差不多,只不过是没有KMeans的reducer类。..在收敛条件满足且所有簇中心的文件最后产生后,再对输入文件中的所有实例进行划分簇的工作,最后把所有实例按照(实例,簇id)的方式写进结果文件。它的Mapper类也是在setup()时将之前计算的簇中心读入,作为全局文件。map()所要做的是,读取每个数据点寻找离该点最近的簇id,通过计算欧式距离,选择距离最小的那个簇中心,输出的格式是

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。