网站大量收购独家精品文档,联系QQ:2885784924

空间数据分析中最常用的是聚类分析,而K-MEANS算法是.docVIP

空间数据分析中最常用的是聚类分析,而K-MEANS算法是.doc

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

空间数据分析中最常用的是聚类分析,而K-MEANS算法是聚类分析中常用的,其主要思想是在给定的聚类数目下对多维(我做的是三维空间点)向量进行聚类,其过程为: 1.首先根据聚类数目,初始化聚类中心(一般是随机确定的) 2.判断所有向量到聚类中心的距离(常用是欧氏距离),将所有向量划分归类. 3.对每类进行中心点计算,看是否与原中心点相吻合,全部吻合则循环结束,否则变换中心,返回STEP 1. ?? 其缺点有: 1.对于随机的初始选取可能导致不同的聚类结果,甚至存在着无解的情况 2.该算法是基于目标函数的算法,通常采用梯度法求解极值,由于梯度法的有哪些信誉好的足球投注网站方向是沿着能量减小的方向进行,使得算法很容易陷入局部极值,而且对于孤立点是敏感的. ??? 运用该算法可根据实际情况定义初始聚类中心。 以下是我做的聚类分析的代码(仅供参考) vectoraCluster m_vecCluster;? //用来存储所有的聚类 struct aCluster { ?aCluster()? { NumMembers=0;} ?? Point3D????? Center;????? //存放类的中心 ?? vectorint? Member;????? //(存放当前类中的点的index) ?? int????????? NumMembers;? //存放类中点的数目 }; void CView::OnCluster() { ?//清除原有数据 ?m_vecCluster.clear();//放聚类点 ?m_vecExtreCenter.clear();//聚类中心 ??CString str; ??? str.Format(%i,MaxCluster+1); ?if(m_numClusters=MaxCluster) ?{ ????InitCenter(); ? //找初始聚类中心,一般情况下,可随机定义,偶根据数据做了点处理. ??InitClusters(); ? //用初始聚类中心初始类 ??RunKMeans(); ?} ?else ??MessageBox(请输入一个小于 + str + 的聚类数目);? } ? void CView::InitClusters() { ??? int i; ?aCluster aClus; ? ?for(i = 0; i m_numClusters; i++) ?{ ??aClus.Center.x=m_vecExtreCenter[i].extrePoint.x; ??aClus.Center.y=m_vecExtreCenter[i].extrePoint.y; ??m_vecExtreCenter[i].extrePoint.z=1250; ??aClus.Center.z=m_vecExtreCenter[i].extrePoint.z; ?? ??m_vecCluster.push_back(aClus);? ?} ? } ? void CView::RunKMeans() { ?bool converged; //控制循环终止条件 ?int pass;???????????? //叠代次数 ?pass=1;?????? ?converged=false; ?while (converged==false) ?{ ??pass++; ??DistributeSamples(); ??converged=CalcNewClustCenters(); ?? ??if(pass100) ???break; ?} /* endwhile */ ? } ? void CView::DistributeSamples() { ?int i,pat,Clustid; ?//清空聚类成员个数 ?for (i=0; im_vecCluster.size();i++) ?{ ??m_vecCluster[i].NumMembers=0; ??m_vecCluster[i].Member.clear(); ?} ?for (pat=1; pat=m_numKhd; pat++) ?{ ??//找出离index为pat的点最近的类 ??Clustid= FindClosestCluster(pat); ??//将该点加入到找到的类中 ??m_vecCluster[Clustid].Member.push_back(pat); ??m_vecCluster[Clustid].NumMembers++; ?} /* endfor */ ? } int CView::FindClosest

文档评论(0)

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

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

1亿VIP精品文档

相关文档