版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、-作者xxxx-日期xxxx模糊c均值聚类+FCM算法的MATLAB代码【精品文档】模糊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(Data,
2、C,plotflag,M,epsm)% 输入:% Data: NS 型矩阵,聚类的原始数据,即一组有限的观测样本集,% Data 的每一行为一个观测样本的特征矢量,S 为特征矢量% 的维数,N 为样本点的个数% C: 聚类数,1CN% plotflag: 聚类结果 2D/3D 绘图标记,0 表示不绘图,为缺省值 % M: 加权指数,缺省值为 2% e% 输出:% U: CN 型矩阵,FCM 的划分矩阵% P: CS 型矩阵,FCM 的聚类中心,每一行对应一个聚类原型% Dist: CN 型矩阵,FCM 各聚类中心到各样本点的距离,聚类中% 心 i 到样本点 j 的距离为 Dist(i,j)%
3、Cluster_Res: 聚类结果,共 C 行,每一行对应一类% Obj_Fcn: 目标函数值% iter: FCM 算法迭代次数% See also: fuzzydist maxrowf fcmplotif nargin5 epsm=1.0e-6; endif nargin4 M=2;endif nargin4 | plotflag Obj_Fcn(iter)=sum(sum(Um.*Dist.2); end % FCM 算法迭代停止条件 if norm(U-U0,Inf) 3 res = maxrowf(U); for c = 1:C v = find(res=c); Cluster_Re
4、s(c,1:length(v)=v; endend% 绘图if plotflag fcmplot(Data,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)% P0: 初始聚类中心% 输出: U,P,Dist,Cluster_Res,Obj_Fcn
5、,iter: 见 fuzzycm.m % See also: fuzzycmif nargin5 epsm=1.0e-6; endif nargin4 M=2;endif nargin4 | plotflag Obj_Fcn(iter)=sum(sum(Um.*Dist.2); end % FCM 算法迭代停止条件 if norm(P-P0,Inf) 3 res = maxrowf(U); for c = 1:C v = find(res=c); Cluster_Res(c,1:length(v)=v; endend% 绘图if plotflag fcmplot(Data,U,P,Obj_Fc
6、n);endm文件3/7:function fcmplot(Data,U,P,Obj_Fcn)% FCM 结果绘图函数% See also: fuzzycm maxrowf ellipseC,S = size(P); res = maxrowf(U);str = po*x+dv2 figure(2),plot3(P(:,1),P(:,2),P(:,3),rs),hold on for i=1:C v=Data(find(res=i),:); plot3(v(:,1),v(:,2),v(:,3),str(rem(i,12)+1) ellipse(max(v(:,1)-min(v(:,1), .
7、max(v(:,2)-min(v(:,2), . max(v(:,1)+min(v(:,1), . max(v(:,2)+min(v(:,2)/2, . r:,(max(v(:,3)+min(v(:,3)/2) end grid on,title(3D 聚类结果图,fontsize,8),hold offendm文件4/7:function D=fuzzydist(A,B)% 模糊聚类分析: 样本间的距离% D = fuzzydist(A,B)D=norm(A-B);m文件5/7:function mr=maxrowf(U,c)% 求矩阵 U 每列第 c 大元素所在行,c 的缺省值为 1% 调
8、用格式: mr = maxrowf(U,c)% See also: addrif nargin2 c=1;endN=size(U,2);mr(1,N)=0;for j=1:N aj=addr(U(:,j),descend); mr(j)=aj(c);endm文件6/7:function ellipse(a,b,center,style,c_3d)% 绘制一个椭圆% 调用: ellipse(a,b,center,style,c_3d)% 输入:% a: 椭圆的轴长(平行于 x 轴)% b: 椭圆的轴长(平行于 y 轴)% center: 椭圆的中心 x0,y0,缺省值为 0,0% style:
9、绘制的线型和颜色,缺省值为实线蓝色% c_3d: 椭圆的中心在 3D 空间中的 z 轴坐标,可缺省if nargin4 style=b;endif nargin4 plot3(x,y,ones(1,360)*c_3d,style)else plot(x,y,style)endm文件7/7:function f = addr(a,strsort)% 返回向量升序或降序排列后各分量在原始向量中的索引% 函数调用:f = addr(a,strsort)% strsort: ascend or descend% default is ascend% - example -% addr( 4 5 1 2
10、 ) returns ans:% 3 4 1 2 if nargin=1 strsort=ascend;endsa=sort(a); ca=a;la=length(a);f(la)=0;for i=1:la f(i)=find(ca=sa(i),1); ca(f(i)=NaN;endif strcmp(strsort,descend) f=fliplr(f);end几天前我还在这里发帖求助,可是很幸运在其他地方找到了,在这里和大家分享一下!function center, U, obj_fcn = FCMClust(data, cluster_n, options) % FCMClust.m
11、采用模糊C均值对数据集data聚为cluster_n类% % 用法: % 1.center,U,obj_fcn = FCMClust(Data,N_cluster,options); % 2.center,U,obj_fcn = FCMClust(Data,N_cluster); % % 输入: % data - nxm矩阵,表示n个样本,每个样本具有m的维特征值 % N_cluster - 标量,表示聚合中心数目,即类别数 % options - 4x1矩阵,其中 % options(1):隶属度矩阵U的指数,1 (缺省值: 2.0) % options(2):最大迭代次数 (缺省值: 10
12、0) % options(3):隶属度最小变化量,迭代终止条件 (缺省值: 1e-5) % options(4):每次迭代是否输出信息标志 (缺省值: 1) % 输出: % center - 聚类中心 % U - 隶属度矩阵 % obj_fcn - 目标函数值 % Example: % data = rand(100,2); % center,U,obj_fcn = FCMClust(data,2); % plot(data(:,1), data(:,2),o); % hold on; % maxU = max(U); % index1 = find(U(1,:) = maxU); % ind
13、ex2 = 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(center(1 2,1),center(1 2,2),*,color,k) % hold off; if nargin = 2 & nargin = 3, %判断输入参数个数只能是2个或3个 error(Too many or too few input arguments!); end data_n =
14、 size(data, 1); % 求出data的第一维(rows)数,即样本个数 in_n = size(data, 2); % 求出data的第二维(columns)数,即特征值长度 % 默认操作参数 default_options = 2; % 隶属度矩阵U的指数 100; % 最大迭代次数 1e-5; % 隶属度最小变化量,迭代终止条件 1; % 每次迭代是否输出信息标志if nargin = 2, options = default_options; else %分析有options做参数时候的情况 % 如果输入参数个数是二那么就调用默认的option; if length(options) 4, %如果用户给的opition数少于4个那么其他用默认值; tmp = default_options; tmp(1:length(options) = options; options = tmp; end % 返回options中是数的值为0(如NaN),不是数时为1 nan_index = find(isnan(options)=1); %
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《预防肠道传染病》课件
- 《传世提案标准》课件
- 《路由与路由协定》课件
- 巴黎地下空间规划
- 正大食品品牌规划
- 安全日活动总结
- 文化创意产业资金规划手册
- 化工原料供应投标模板
- 办公空间共享租赁合同协议书
- 环保工程队施工合同
- 磷苯妥英钠注射用浓溶液-药品临床应用解读
- 电商行业财务分工分析
- 家庭安全用电试题及答案
- 访谈化学工程师职业生涯人物访谈报告
- GA/T 2012-2023窃照专用器材鉴定技术规范
- 知行合一读书分享
- 竣工结算审计服务投标方案
- 国家开放大学电大《基础写作》2023-2023期末试题及答案(试卷号:2412)
- 螺旋挤搓式玉米脱粒机的设计
- Python程序设计PPT完整全套教学课件
- 普外科年度工作汇报总结
评论
0/150
提交评论