凝聚层次聚类算法matlab源码.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
共享一个在数据挖掘课程中作为示例使用的凝聚层次聚类算法源码,供大家学习交流 使用时将源码复制进一个新的 Function 并更改m文件的文件名为AGNES即可 --2016 年4月10 日 以下为程序的 matlab 源码: function [cluster]=AGNES(pointSet,targetClusterNum,method) % 凝聚层次聚类算法 % 输入:点集 pointSet 、目标簇数 targetClusterNum 、簇间差异度度量方式 method % 点集 pointSet 为n*m矩阵,包含n个点,每个点有 m个属性 % 目标簇数 targetClusterNum 为一个整数, 0targetClusterNumn % method 为字符串,对应不同距离度量方式: % method=min: 最小距离度量 ;method=max: 最大距离度量 ;method=mean: 均值距离度 量;method=avg: 平均距离度量 ; % 输出: cluster 为长度为n的向量,表示各点所对应簇的类别标记 % 调用方式示例: cluster=AGNES(pointSet,3,max); % 表示将 pointSet 使用最大距离度量方式聚为 3 个类,将通过 cluster 变量返回类标记 pointNum=size(pointSet,1); cluster=1:pointNum; %每个点对应簇标记 %当前簇数目。初始默认每个点为单独的一个簇 %当前簇数目。初始默认每个点为单独的一个簇 %若聚类数满足结束条件则算法结束 if clusterNum=targetClusterNum break ; end %计算簇间差异度 clusterDist=zeros(clusterNum); if strcmp(method, mean )==1 %计算各簇间差异度:平均距离 clusterMean=[]; for c=1:clusterNum %计算各簇均值 uniCluster=unique(cluster); subCluster=pointSet(cluster==uniCluster(c),:); clusterMean=[clusterMean;uniCluster(c),mean(subCluster,1)]; end for d=1:size(clusterMean,1) %计算各簇间距离 clusterDist(:,d)=sqrt(sum((clusterMean(:,2:end)-repmat(clusterMean(d,2: en d),size(clusterMea 门,1),1)).人2,2)); end clusterDist=clusterDist+eye(size(clusterDist,1))*max(max(clusterDist))* 100; %将对角线设为最大值 elseif strcmp(method, min )==1 %计算各簇间差异度:最小距离 for c1=1:clusterNum for c2=c1+1:clusterNum subPointSet1=pointSet(cluster==uniCluster(c1),:); subPointSet2=pointSet(cluster==uniCluster(c2),:); subPointSet1Expend=[]; for c3=1:size(subPointSet1,1) subPointSet1Expend=[subPointSet1Expend;repmat(subPointSet1(c3,:),size(s ubPointSet2,1),1)]; end subPointSet2Expend=repmat(subPointSet2,size(subPointSet1,1),1); dist=sqrt(sum((subPoi ntSetlExpe nd-subPoi ntSet2Expe nd).A2,2)); clusterDist(c1,c2)=min(dist); %取最小值 end end clusterDist=clusterDist+clusterDist; %将三角阵转换为对称阵 clusterDist=clusterDist+eye(size(clusterDist,1))*max(max(clusterDist))* 100; %将对角线设为最大值 elseif strcmp(method, max )==1 %计算各簇间差异度:最大距离 for c1=1:clusterNum for c2=c1+1:clusterNum subPointSet1=pointSet(clust

文档评论(0)

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

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

1亿VIP精品文档

相关文档