k-means聚类算法的java实现描述

k-means聚类算法的java实现描述

ID:34417411

大小:41.50 KB

页数:3页

时间:2019-03-05

k-means聚类算法的java实现描述_第1页
k-means聚类算法的java实现描述_第2页
k-means聚类算法的java实现描述_第3页
资源描述:

《k-means聚类算法的java实现描述》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、k-means聚类算法的java实现描述2008年04月09日星期三14:021.什么是k-means聚类算法?   从网上找到了很多定义,这里选取比较典型的几个;   K-Mean分群法是一种分割式分群方法,其主要目标是要在大量高纬的资料点中找出       具有代表性的资料点;这些资料点可以称为群中心,代表点;然后再根据这些        群中心,进行后续的处理,这些处理可以包含    1)资料压缩:以少数的资料点来代表大量的资料,达到资料压缩的功能;    2)资料分类:以少数代表点来代表特点类别的

2、资料,可以降低资料量及计算量;         分割式分群法的目的是希望尽量减小每个群聚中,每一点与群中心的距离平方差(squareerror)。  假设我们现在有一组包含c个群聚的数据,其中第k个群聚可以用集合Gk来表示,假设Gk包含nk笔资料{x1,x2,…,xnk),此群聚中心为yk,则该群聚的平方差ek可以定义为:             ek=Si

3、xi-yk

4、2,其中xi是属于第k群的资料点。而这c个群聚的总和平方差E便是每个群聚的平方差总和:E=Sk=1~cek我们分群的方法,就变成是一个最

5、佳化的问题,换句话说,我们要如何选取c个群聚以及相关的群中心,使得E的值为最小。2.处理流程(1)  从c个数据对象任意选择k个对象作为初始聚类中心;(2)  循环(3)到(4)直到每个聚类不再发生变化为止;(3)  根据每个聚类对象的均值(中心对象),计算每个对象与这些中心对象的距离;并根据最小距离重新对相应对象进行划分;(4)  重新计算每个(有变化)聚类的均值(中心对象)3.java算法的实现说明1)假设给点一组c点资料X={x1,...,xc},每一点都有d维;给定一个群聚的数目k,求其     

6、最好的聚类结果。   2)BasicKMeans.java主类         intcoordCount=250;//原始的资料个树         intdimensions=100;//每个资料的纬度数目         double[][]coordinates=newdouble[coordCount][dimensions];   这里假设c点资料为coordinates对象,其中c为coordCount,d为dimensions相应值。         intmk=30;//想要群聚的数目 

7、   根据群聚数目定义mk个群聚类对象       mProtoClusters=newProtoCluster[mK];//见ProtoCluster类说明    //首先随机选取mk个原始资料点作为群聚类      mProtoClusters[i]=newProtoCluster(coordinates[j]);//i依此为0到mk的值;j为0到coordCount的值   定义一个变量用于记录和跟踪每个资料点属于哪个群聚类     mClusterAssignments=newint[coordC

8、ount];     mClusterAssignments[j]=i;//表示第j个资料点对象属于第i个群聚类    //开始循环    //依次调用计算每个群聚类的均值    mProtoClusters[i].updateCenter(mCoordinates);//计算第i个聚类对象的均值    //依次计算每个资料点到中心点的距离,然后根据最小值划分到相应的群集类中;   采用距离平方差来表示资料点到中心点的距离;    //定义一个变量,来表示资料点到中心点的距离    mDistanceCa

9、che=newdouble[coordCount][mk];     //其中mDistanceCache[i][j]表示第i个资料点到第j个群聚对象中心点的距离;     //距离算法描述():      a)依次取出每个资料点对象double[]coord=coordinates[i];         b)再依次取出每个群聚类中的中心点对象double[]center=mProtoClusters[j].mCenter;         c)计算coord对象与center对象之间的距离      

10、  doubledistance(double[]coord,double[]center){         intlen=coord.length;         doublesumSquared=0.0;         for(inti=0;i

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

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

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