模糊c均值聚类+fcm算法地matlab代码

模糊c均值聚类+fcm算法地matlab代码

ID:30215742

大小:48.50 KB

页数:9页

时间:2018-12-28

模糊c均值聚类+fcm算法地matlab代码_第1页
模糊c均值聚类+fcm算法地matlab代码_第2页
模糊c均值聚类+fcm算法地matlab代码_第3页
模糊c均值聚类+fcm算法地matlab代码_第4页
模糊c均值聚类+fcm算法地matlab代码_第5页
资源描述:

《模糊c均值聚类+fcm算法地matlab代码》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实用标准文案模糊c均值聚类FCM算法的MATLAB代码我做毕业论文时需要模糊C-均值聚类,找了好长时间才找到这个,分享给大家:FCM算法的两种迭代形式的MATLAB代码写于下,也许有的同学会用得着:m文件1/7:function[U,P,Dist,Cluster_Res,Obj_Fcn,iter]=fuzzycm(Data,C,plotflag,M,epsm)%模糊C均值聚类FCM:从随机初始化划分矩阵开始迭代%[U,P,Dist,Cluster_Res,Obj_Fcn,iter]=fuzzycm(D

2、ata,C,plotflag,M,epsm)%输入:%Data:N×S型矩阵,聚类的原始数据,即一组有限的观测样本集,%Data的每一行为一个观测样本的特征矢量,S为特征矢量%的维数,N为样本点的个数%C:聚类数,1

3、,FCM各聚类中心到各样本点的距离,聚类中%心i到样本点j的距离为Dist(i,j)%Cluster_Res:聚类结果,共C行,每一行对应一类%Obj_Fcn:目标函数值%iter:FCM算法迭代次数%Seealso:fuzzydistmaxrowffcmplotifnargin<5epsm=1.0e-6;endifnargin<4M=2;endifnargin<3plotflag=0;end[N,S]=size(Data);m=2/(M-1);iter=0;Dist(C,N)=0;U(C,N)=0;

4、P(C,S)=0;%随机初始化划分矩阵U0=rand(C,N);U0=U0./(ones(C,1)*sum(U0));%FCM的迭代算法whiletrue精彩文档实用标准文案%迭代计数器iter=iter+1;%计算或更新聚类中心PUm=U0.^M;P=Um*Data./(ones(S,1)*sum(Um'))';%更新划分矩阵Ufori=1:Cforj=1:NDist(i,j)=fuzzydist(P(i,:),Data(j,:));endendU=1./(Dist.^m.*(ones(C,1)*s

5、um(Dist.^(-m))));%目标函数值:类内加权平方误差和ifnargout>4

6、plotflagObj_Fcn(iter)=sum(sum(Um.*Dist.^2));end%FCM算法迭代停止条件ifnorm(U-U0,Inf)3res=maxrowf(U);forc=1:Cv=find(res==c);Cluster_Res(c,1:length(v))=v;endend%绘图ifplotflagfcmplot(Da

7、ta,U,P,Obj_Fcn);endm文件2/7:function[U,P,Dist,Cluster_Res,Obj_Fcn,iter]=fuzzycm2(Data,P0,plotflag,M,epsm)%模糊C均值聚类FCM:从指定初始聚类中心开始迭代%[U,P,Dist,Cluster_Res,Obj_Fcn,iter]=fuzzycm2(Data,P0,plotflag,M,epsm)%输入:Data,plotflag,M,epsm:见fuzzycm.m%P0:初始聚类中心%输出:U,P,Di

8、st,Cluster_Res,Obj_Fcn,iter:见fuzzycm.m%Seealso:fuzzycmifnargin<5epsm=1.0e-6;精彩文档实用标准文案endifnargin<4M=2;endifnargin<3plotflag=0;end[N,S]=size(Data);m=2/(M-1);iter=0;C=size(P0,1);Dist(C,N)=0;U(C,N)=0;P(C,S)=0;%FCM的迭代算法whiletrue%迭代计数器iter=iter+1;%计算或更新划分矩阵

9、Ufori=1:Cforj=1:NDist(i,j)=fuzzydist(P0(i,:),Data(j,:));endendU=1./(Dist.^m.*(ones(C,1)*sum(Dist.^(-m))));%更新聚类中心PUm=U.^M;P=Um*Data./(ones(S,1)*sum(Um'))';%目标函数值:类内加权平方误差和ifnargout>4

10、plotflagObj_Fcn(iter)=sum(sum(Um.*Dist.^2));en

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。