- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
k-means聚类算法的java实现描述.doc
k-means聚类算法的java实现描述
2008年04月09日 星期三 14:02
1. 什么是 k-means 聚类算法?
??? 从网上找到了很多定义,这里选取比较典型的几个;
??? K-Mean 分群法是一种分割式分群方法,其主要目标是要在大量高纬的资料点中找出
???????具有代表性的资料点;这些资料点可以称为群中心,代表点;然后再根据这些
????????群中心,进行后续的处理,这些处理可以包含
???? 1 )资料压缩:以少数的资料点来代表大量的资料,达到资料压缩的功能;
???? 2 )资料分类:以少数代表点来代表特点类别的资料,可以降低资料量及计算量;
??
???????分割式分群法的目的是希望尽量减小每个群聚中,每一点与群中心的距离平方差(square error)。??
假设我们现在有一组包含c个群聚的数据,其中第 k 个群聚可以用集合 Gk来表示,假设 Gk包含nk笔
资料 {x1, x2, …, xnk),此群聚中心为yk,则该群聚的平方差 ek可以定义为:
?????????????ek = S i |xi-yk|2 ,其中 xi是属于第 k 群的资料点。
而这c个群聚的总和平方差E便是每个群聚的平方差总和:
E = S k=1~c ek
我们分群的方法,就变成是一个最佳化的问题,换句话说,我们要如何选取 c 个群聚以及相关的群中心,
使得 E 的值为最小。
2 .处理流程
( 1 ) ??从 c 个数据对象任意选择 k 个对象作为初始聚类中心; ( 2 ) ??循环( 3 )到( 4 )直到每个聚类不再发生变化为止; ( 3 ) ??根据每个聚类对象的均值(中心对象),计算每个对象与这些中心对象的距离;并根据最小距离重新对相应对象进行划分; ( 4 ) ??重新计算每个(有变化)聚类的均值(中心对象)
3. java 算法的实现说明
1) 假设给点一组 c 点资料 X = {x1, ..., xc} ,每一点都有 d 维;给定一个群聚的数目 k, 求其
?????最好的聚类结果。
??? 2 ) BasicKMeans.java 主类
????????? int coordCount = 250;// 原始的资料个树
????????? int dimensions = 100;// 每个资料的纬度数目
????????? double[][] coordinates = new double[coordCount][dimensions];
??? 这里假设 c 点资料为 coordinates 对象,其中 c 为 coordCount,d 为 dimensions 相应值。
????????? int mk = 30; // 想要群聚的数目
???? 根据群聚数目定义 mk 个群聚类对象
??????? mProtoClusters = new ProtoCluster[mK];// 见 ProtoCluster 类说明
???? // 首先随机选取 mk 个原始资料点作为群聚类
?????? mProtoClusters[i]= new ProtoCluster (coordinates[j] );//i 依此为 0 到 mk 的值; j 为 0 到 coordCount 的值
??? 定义一个变量用于记录和跟踪每个资料点属于哪个群聚类
????? mClusterAssignments = new int[coordCount];
????? mClusterAssignments[j]=i;// 表示第 j 个资料点对象属于第 i 个群聚类
???? // 开始循环
???? // 依次调用计算每个群聚类的均值
???? mProtoClusters[i].updateCenter(mCoordinates);// 计算第 i 个聚类对象的均值
???? // 依次计算每个资料点到中心点的距离,然后根据最小值划分到相应的群集类中;
??? 采用距离平方差来表示资料点到中心点的距离;
???? //定义一个变量,来表示资料点到中心点的距离
???? mDistanceCache = new double[coordCount ][mk];
????? //其中mDistanceCache[i][j]表示第i个资料点到第j个群聚对象中心点的距离;
????? //距离算法描述():
?????? a)依次取出每个资料点对象double[] coord = coordinates[i];
????????? b)再依次取出每个群聚类中的中心点对象double[] center = mProtoClusters[j].mCenter;
????????? c)计算coo
您可能关注的文档
- HOOK和数据库访问.doc
- Howtoimpovemystudy.doc
- HowtowritealiteratureReview.ppt
- HP驱动和监控agent安装.doc
- HR工作流程程图.ppt
- HTC官方解锁root权限方法.doc
- htmlparser实现从网页上抓取数据.doc
- HTMLParser抽取Web网页正文信息.doc
- html节点.doc
- HTTP请求模型和头信息.doc
- 2025年智能电网柔性直流输电技术在我国西部地区应用前景.docx
- 7.2 弹力-人教版八年级物理下册.pptx
- 2025年智能电网柔性直流输电技术在智能变电站中的应用研究.docx
- 2025年智能电网柔性直流输电技术在智能电网智能化存储中的应用.docx
- 2025年智能电网柔性直流输电技术在新能源并网中的应用研究.docx
- 2025年智能电网柔性直流输电技术在智能电网智能化控制中的应用.docx
- 2025年智能电网柔性直流输电技术在智能电网智能化预测中的应用.docx
- 2025年智能电网柔性直流输电技术在智能电网智能化服务中的应用.docx
- 2025年智能电网柔性直流输电技术在智能电网智能化运维中的应用.docx
- 2025年智能电网柔性直流输电技术智能化保护系统研究.docx
原创力文档


文档评论(0)