基于C均值(K均值)对数据进行聚类分析.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
模式识别大作业 题目:对数据进行聚类分析的实验(五) 姓名:黎 照 姓名:陈升富 姓名:益 琛 日期:2012/5/10 一、基本要求 用FAMALE.TXT、MALE.TXT和test2.txt的数据作为本次实验使用的样本集,利用C均值和分级聚类方法对样本集进行聚类分析,对结果进行分析,从而加深对所学内容的理解和感性认识。 主要思想 1、把FAMALE.TXT和MALE.TXT两个文件合并成一个,同时采用身高和体重数据作为特征,设类别数为2,利用C均值聚类方法对数据进行聚类,并将聚类结果表示在二维平面上。尝试不同初始值对此数据集是否会造成不同的结果。 对1中的数据利用C均值聚类方法分别进行两类、三类、四类、五类聚类,画出聚类指标与类别数之间的关系曲线,探讨是否可以确定出合理的类别数目。 对1中的数据利用分级聚类方法进行聚类,分析聚类结果,体会分级聚类方法。 利用test2.txt数据或者把test2.txt的数据与上述1中的数据合并在一起,重复上述实验,考察结果是否有变化,对观察到的现象进行分析,写出体会。 实验原理 C均值聚类方法 (2)C均值算法步骤: 1、任选C个初始聚类中心 。一般以开头C个样本作为初始中心。 2、将模式样本集的每一样本按最小距离原则分配给C个聚 类中心,即在第m次迭代时,若 则, , 表示第m次迭代时,以第j个聚类中心为代表的聚类域 3由步骤2计算新的聚类中心,即: 式中Ni为第i个聚类域 中的样本个数。其均值向量作为新的聚类中心,因为这样可以使误差平方和准则函数: 达到最小值。 4若 ,算法收敛,计算完毕。否则返回到步骤2,进行下一次迭代。 (3)算法流程图 实验源代码 1、主程序 clear all clc [FH FW]=textread(C:\Users\lenvo\Desktop\D??¨???t?D\FEMALE.txt,%f %f); [MH MW]=textread(C:\Users\lenvo\Desktop\D??¨???t?D\MALE.txt,%f %f); Data(1:50,1)=FH;Data(51:100,1)=MH; Data(1:50,2)=FW;Data(51:100,2)=MW; C=input(ê?è?C£o) [U,P,Dist,Cluster_Res,Obj_Fcn,iter]=fuzzycm(Data,C) plot(Data(:,1), Data(:,2),o); hold on; maxU = max(U); index1 = find(U(1,:) == maxU); index2 = find(U(2,:) == maxU); line(Data(index1,1),Data(index1,2),marker,*,color,g); line(Data(index2,1),Data(index2,2),marker,*,color,r); plot([P([1 2],1)],[P([1 2],2)],*,color,k) hold off; 2、子程序 function [U,P,Dist,Cluster_Res,Obj_Fcn,iter]=fuzzycm(Data,C,plotflag,M,epsm) if nargin5 epsm=1.0e-6; end if nargin4 M=2; end if nargin3 plotflag=0; end [N,S]=size(Data);m=2/(M-1);iter=0; Dist(C,N)=0; U(C,N)=0; P(C,S)=0; % ???ú3?ê??ˉ??·????ó U0 = rand(C,N); U0=U0./(ones(C,1)*sum(U0)); % FCM μ?μü′ú??·¨ while true % μü′ú??êy?÷ iter=iter+1; % ?????ò?üD???àà?DD? P Um=U0.^M; P=Um*Data./(ones(S,1)*sum(Um)); % ?üD???·????ó U for i=1:C for j=1:N Dist(i,j)=fuzzydist(P(i,:),Data(j,:)); end end

文档评论(0)

2749166188 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档