模糊c均值聚类+FCM算法地MATLAB代码_第1页
模糊c均值聚类+FCM算法地MATLAB代码_第2页
模糊c均值聚类+FCM算法地MATLAB代码_第3页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、模糊c均值聚类FCM算法的MATLAB代码我做毕业论文时需要模糊 C-均值聚类,找了好长时间才找到这个,分享给大家:FCM算法的两种迭代形式的MATLAB代码写于下,也许有的同学会用得着m文件1/7:fun ctio n 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(Data,C,plotflag,M,epsm)%输入:% Data: N XS型矩阵,聚类的原始数据

2、,即一组有限的观测样本集,%Data的每一行为一个观测样本的特征矢量,S为特征矢量%的维数,N为样本点的个数% C:聚类数,1<C<N%plotflag: 聚类结果2D/3D 绘图标记,0表示不绘图,为缺省值%M:加权指数,缺省值为2% epsm: FCM 算法的迭代停止阈值,缺省值为1.0e-6%输出:%U:CXN型矩阵,FCM的划分矩阵%P:C XS型矩阵,FCM的聚类中心,每一行对应一个聚类原型,聚类中% Dist: C XN型矩阵,FCM各聚类中心到各样本点的距离%心i到样本点j的距离为 Dist(i,j)%Cluster_Res:聚类结果,共C行,每一行对应一类%Obj_

3、Fcn:目标函数值%iter: FCM 算法迭代次数% See also: fuzzydist maxrowf fcmplotif nargin<5epsm=1.0e-6;end if nargin<4M=2;endif nargin<3plotflag=0;endN,S=size(Data);m=2/(M-1);iter=0;Dist(C,N)=0; U(C,N)=0; P(C,S)=0;%随机初始化划分矩阵U0 = ran d(C,N);U0=U0./(o nes(C,1)*sum(U0);% FCM的迭代算法while true%迭代计数器iter=iter+1;%计算

4、或更新聚类中心PUm=U0.AM;P=Um*Data./(o nes(S,1)*sum(Um')'%更新划分矩阵Ufor i=1:Cfor j=1:NDist(i,j)=fuzzydist(P(i,:),Data(j,:);endend%目标函数值:类内加权平方误差和if n argout>4 | plotflagend% FCM算法迭代停止条件if norm( U-U0,I nf)<epsmbreakendU0=U;end%聚类结果if n argout > 3res = maxrowf(U);for c = 1:Cv = fin d(res=c);Clus

5、ter_Res(c,1:le ngth(v)=v; endend%绘图if plotflagfcmplot(Data,U,P ,Obj_Fcn);endm文件2/7:fun ctio n U,P ,Dist,Cluster_Res,Obj_Fcn,iter=fuzzycm2(Data,PO,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:

6、初始聚类中心% 输出:U,P,Dist,Cluster_Res,Obj_Fcn,iter:见 fuzzycm.m% See also: fuzzycmif nargin<5epsm=1.0e-6;endif nargin<4M=2;endif nargin<3plotflag=0;endN,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的迭代算法 while true%迭代计数器iter=iter+1;%计算或更新划分矩阵Ufor i=1:Cj,:);

7、for j=1:NDist(i,j)=fuzzydist(PO(i,:),Data(endendU=1./(Dist.Am.*(o nes(C,1)*sum(Dist.A(-m);%更新聚类中心PUm=U.AM;P=Um*Data./(o nes(S,1)*sum(Um')'%目标函数值:类内加权平方误差和if n argout>4 | plotflagObj_Fcn(iter)=sum(sum(Um.*Dist.A2); end% FCM算法迭代停止条件if norm(P-P0,l nf)<epsmbreakendP0=P;end%聚类结果if n argout

8、> 3res = maxrowf(U);for c = 1:Cv = fin d(res=c);Cluster_Res(c,1:le ngth(v)=v;endend%绘图if plotflagfcmplot(Data,U,P ,Obj_Fcn);endm文件3/7:fun ctio n fcmplot(Data,U,P,Obj_Fcn)% FCM结果绘图函数% See also: fuzzycm maxrowf ellipseC,S = size(P); res = maxrowf(U);str = 'po*x+d Av><.h:%目标函数绘图figure(1),p

9、lot(Obj_Fcn)title('目标函数值变化曲线','fontsize',8)% 2D绘图if S=2figure(2),plot(P(:,1),P(:,2),'rs'),hold onfor i=1:Cv=Data(fi nd(res=i),:); plot(v(:,1),v(:,2),str(rem(i,12)+1) ellipse(max(v(:,1)-mi n(v(:,1), .max(v(:,2)-mi n(v(:,2), .max(v(:,1)+mi n(v(:,1), .max(v(:,2)+mi n( v(:,2)/2,&

10、#39;r:')endgrid on,title('2D聚类结果图','fontsize',8),hold offend% 3D绘图if S>2figure(2),plot3(P(:,1),P(:,2),P(:,3),'rs'),hold onfor i=1:Cv=Data(fi nd(res=i),:);plot3(v(:,1),v(:,2),v(:,3),str(rem(i,12)+1)ellipse(max(v(:,1)-mi n(v(:,1), .max(v(:,2)-mi n(v(:,2), .max(v(:,1)+mi

11、n(v(:,1), .max(v(:,2)+mi n(v(:,2)/2, .'r:',(max(v(:,3)+mi n(v(:,3)/2)endgrid on,title('3D聚类结果图','fontsize',8),hold offendm文件4/7:fun ctio n D=fuzzydist(A,B)%模糊聚类分析:样本间的距离% D = fuzzydist(A,B)D=n orm(A-B);m文件5/7:fun ctio n mr=maxrowf(U,c)%求矩阵U每列第c大元素所在行,c的缺省值为1% 调用格式:mr = maxrow

12、f(U,c)% See also: addrif nargin<2 c=1;endN=size(U,2);mr(1,N)=0;for j=1:Naj=addr(U(:,j),'desce nd');mr( j)=aj(c);endm文件6/7:function ellipse(a,b,ce nter,style,c_3d)%绘制一个椭圆% 调用:ellipse(a,b,center,style,c_3d)%输入:%a:椭圆的轴长(平行于x轴)% b:椭圆的轴长(平行于y轴)%center:椭圆的中心xO,yO,缺省值为0,0%style:绘制的线型和颜色,缺省值为实线蓝色

13、%c_3d:椭圆的中心在 3D空间中的z轴坐标,可缺省if nargin<4style='b:endif nargin<3 | isempty(ce nter)cen ter=O,O;endt=1:360;x=a/2*cosd(t)+ce nter(1);y=b/2*s in d(t)+ce nter(2);if nargin>4plot3(x,y,o nes(1,360)*c_3d,style)elseplot(x,y,style)endm文件7/7:function f = addr(a,strsort)%返回向量升序或降序排列后各分量在原始向量中的索引% 函数调

14、用:f = addr(a,strsort)% strsort: 'asce nd' or 'desce nd'%default is 'asce nd'%example% addr( 4 5 1 2 ) returns ans:% 3412 if nargin=1strsort='asce nd:endsa=sort(a); ca=a;la=le ngth(a);f(la)=O;for i=1:laf(i)=fi nd(ca=sa(i),1); ca(f(i)=NaN;endif strcmp(strsort,'desce nd&

15、#39;) f=fliplr(f);end几天前我还在这里发帖求助,可是很幸运在其他地方找到了,在这里和大家分享一下!fun cti on ce nter, U, obj_fcn = FCMCIust(data, cluster, n, opti ons)% FCMCIust.m采用模糊C均值对数据集data聚为cluster,n类%用法:%1. ce nter,U,obj_fc n = FCMCIust(Data,N_cluster,optio ns);%2. ce nter,U,obj_fc n = FCMCIust(Data,N_cIuster);%输入:%datanxm 矩阵,表示n个

16、样本,每个样本具有m的维特征值%N_cIuster -标量,表示聚合中心数目,即类别数%opti ons-4x1 矩阵,其中%opti on s(1):隶属度矩阵U的指数,1(缺省值:2.0)%opti on s(2):最大迭代次数(缺省值:100)%opti on s(3):隶属度最小变化量,迭代终止条件(缺省值:1e-5)%opti on s(4):每次迭代是否输出信息标志(缺省值:1)%输出:% cen ter- 聚类中心% U- 隶属度矩阵% obj_fc n-目标函数值%Example:%data = ran d(100,2);%ce nter,U,obj_fc n = FCMCIu

17、st(data,2);%plot(data(:,1), data(:,2),'o');%hold on;%maxU = max(U);%in dexl = fin d(U(1,:) = maxU);%in dex2 = fin d(U(2,:) = maxU);%lin e(data(i ndex1,1),data( in dex1,2),'marker','*,'color','g');%lin e(data(i ndex2,1),data( in dex2,2),'marker','*,'

18、;color','r');%plot(ce nter(1 2,1),ce nter(1 2,2),'*','color','k')%hold off;if nargin = 2 & nargin = 3,%判断输入参数个数只能是2个或3个error('Too many or too few in put argume nts!');enddata_ n = size(data, 1); %求出data的第一维(rows)数,即样本个数in_n = size(data, 2);%求出data的第二维(

19、columns)数,即特征值长度%默认操作参数default_optio ns = 2;%隶属度矩阵U的指数100;%最大迭代次数1e-5;%隶属度最小变化量,迭代终止条件1;%每次迭代是否输出信息标志if nargin = 2,opti ons = default_opti ons;else%分析有options做参数时候的情况%如果输入参数个数是二那么就调用默认的option;if length(options) < 4, % 如果用户给的opition 数少于4个那么其他用 默认值;tmp = default_opti ons;tmp(1:le ngth(opti on s) = opti ons;opti ons = tmp;end%返回options中是数的值为0(如NaN),不是数时为1nan_in dex = fin d(is nan( opti on s)=1);%将denfault_options中对应位置的参数赋值给options中不是数的位置.opti ons(nan_in dex) = default_opti ons(nan_in dex);if optio ns<=1, %如果模糊矩阵的指数小于等于1error('T

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论