- 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-mean算法介绍
K-MEANS算法 .流程
输入:聚类个数k,以及包含 个数据对象的数据库。
输出:满足方差最小标准的k个聚类。
处理流程:? ? ? ?
(1)??从 个数据对象任意选择 k 个对象作为初始聚类中心;
(2)??循环(3)到(4)直到每个聚类不再发生变化为止
(3)??根据每个聚类对象的均值(中心对象),计算每个对象与这些中心对象的距离;并根据最小距离重新对相应对象进行划分;
(4)??重新计算每个(有变化)聚类的均值(中心对象)
k-means 算法接受输入量 k ;然后将个数据对象划分为 k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”来进行计算的。k-means 算法的工作过程说明如下:首先从个数据对象任意选择 k 个对象作为初始聚类中心;而对于所剩下其它对象,则根据它们与这些聚类中心的相似度(距离),分别将它们分配给与其最相似的(聚类中心所代表的)聚类;然后再计算每个所获新聚类的聚类中心(该聚类中所有对象的均值);不断重复这一过程直到标准测度函数开始收敛为止。一般都采用均方差作为标准测度函数. k个聚类具有以下特点:各聚类本身尽可能的紧凑,而各聚类之间尽可能的分开。
2 .
???聚类法的目的是希望每一中心的距平方差(square error)。?一般都采用均方差作为标准测度函数有一包含c的,其中第 k 可以用集合 Gk表示, Gk包含nk{x1, x2, …, xnk},此中心yk,的平方差 ek可以定:
???????????? ek = ? i |xi-yk|2 ,其中 xi是第 k 的。
?而c个类的总的平方差E便是每的平方差和:
E = ? k=1~c ek
我方法,就成是一最佳化的,我們要如何取 c ,使得 E 的值最小。
?3. java 算法的实现说明
? 1) 假设给一组 c 个点)数据 X = {x1, ..., xc} ,每一点都有 d 维;给定一个类(簇)的数目 k, 求其最好的聚类结果。
? 2 ) BasicKMeans.java 主类
??????? int pointCount = 250;// 原始的数据个
??????? int dimensions = 100;// 每个数据的维度数目
??????? double[][] points = new double[pointCount][dimensions]; 这里假设 c 点数据为 points 对象,其中 c 为 pointCount,d 为 dimensions 相应值。
??????? int mk = 30; // 想要类(簇)的数目根据类(簇)数目定义 mk 个类(簇)类对象
????? mProtoClusters = new ProtoCluster[mK];// 见 ProtoCluster 类说明
?? // 首先随机选取 mk 个原始数据点作为类(簇)???? mProtoClusters[i]= new ProtoCluster (points[j] );//i 类索引,依此为 0 到 mk 的值; j 为 0 到 pointCount 的值
? 定义一个变量用于记录和跟踪每个数据点属于哪个类(簇)类
??? mClusterAssignments = new int[pointCount];
??? mClusterAssignments[j]=i;// 表示第 j 个数据点对象属于第 i 个类(簇)
?? // 开始循环
?? // 依次调用计算每个类(簇)类的均值
?? mProtoClusters[i].updateCenter(mPoints);// 计算第 i 个聚类的均值 ?? // 依次计算每个数据点到中心点的距离,然后根据最小值划分到相应的群集类中;采用距离平方差来表示数据点到中心点的距离;
?? //定义一个变量,来表示数据点到中心点的距离
?? mDistanceCache = new double[pointCount ][mk];
??? //其中mDistanceCache[i][j]表示第i个数据点到第j个类(簇)对象中心点的距离;
??? //距离算法描述:
????// a)依次取出每个数据点对象double[] coord = points[i];
????????b)再依次取出每个类(簇)类中的中心点对象double[] center = mProtoClusters[j].mCenter;
??????? c)计算coord对象与center对象之间的距离?
???? double distance(
您可能关注的文档
最近下载
- 干式变压器烧毁原因分析与配电系统技术改造-油气储运.PDF VIP
- 远红外止咳贴对小儿支气管肺炎疗效观察.doc VIP
- 长输天然气管道施工组织方案(技术标).doc
- 海尼曼 Fountas & Pinnell 有声绘本-英语入门005 Down The River.pdf VIP
- 教师助手:巧用AI高效教学_笔记.docx VIP
- 生成式AI在高中数学课堂中的应用与教学效果评估教学研究课题报告.docx
- 基于单片机的微型打印机设计.docx VIP
- 学校食堂劳务外包管理服务方案.docx VIP
- 《公路养护安全作业规程》(JTG H30-2015)解读和培训学习.pptx
- 14J938抗爆泄爆图集规范-watermark.pdf VIP
文档评论(0)