matlab模糊聚类程序.docx
- 文档编号:26726658
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:15
- 大小:212.18KB
matlab模糊聚类程序.docx
《matlab模糊聚类程序.docx》由会员分享,可在线阅读,更多相关《matlab模糊聚类程序.docx(15页珍藏版)》请在冰豆网上搜索。
matlab模糊聚类程序
3.数据标准化
(1)数据矩阵
设论域
为被分类的对象,每个对象又由指标
表示其性状即
(i=1,2,…,12)于是得到原是数据矩阵
(2)数据标准化
将模糊矩阵的每一个数据压缩到[0,1]上,采用平移.极差变换进行数据标准化
(k=1,2,…,m)
运用matlab编程由函数F_jisjbzh.m【见附录3.4】的标准化矩阵是
附录3.4
function[X]=F_JISjBzh(cs,X)
%模糊聚类分析数据标准化变换
%X原始数据矩阵;cs=0,不变换;cs=1,标准差变换
%cs=2,极差变换
if(cs==0)return;end
[n,m]=size(X);%获得矩阵的行列数
if(cs==1)%平移极差变换
for(k=1:
m)xk=0;
for(i=1:
n)xk=xk+X(i,k);end
xk=xk/n;sk=0;
for(i=1:
n)sk=sk+(X(i,k)-xk)^2;end
sk=sqrt(sk/n);
for(i=1:
n)X(i,k)=(X(i,k)-xk)/sk;end
end
else%平移*极差变换
for(k=1:
m)xmin=X(1,k);xmax=X(1,k);
for(i=1:
n)
if(xmin>X(i,k))xmin=X(i,k);end
if(xmax end for(i=1: n)X(i,k)=(X(i,k)-xmin)/(xmax-xmin);end end end 第二步: 标定(建立模糊相似矩阵) 对标定我们运用了直接欧几里得距离法: 其中c为任意选区的参数,它使得0≤ ≤1, 表示 与 的距离, 运用matlab软件编写F_jir.m函数【见附录3.5】,取cs==8,的模糊相似矩阵 附录3.5: (仅附录了一段用到的程序) function[R]=F_jir(cs,X) %cs==8,直接欧几里得距离法 %cs==9,直接海明距离法(绝对值减数法) %cs==10,直接切比雪夫距离法 elseif(cs<=10) C=0; for(i=1: n) for(j=i+1: n) d=0; %直接欧几里得距离法 if(cs==8) for(k=1: m) d=d+(X(i,k)-X(j,k))^2; end d=sqrt(d); %直接海明距离法 elseif(cs==9) for(k=1: m) d=d+abs(X(i,k)-X(j,k)); end %直接切比雪夫距离法 else for(k=1: m) if(d d=abs(X(i,k)-X(j,k)); end end end if(C C=d; end end end C=1/(1+C); for(i=1: n) for(j=1: n) d=0; %直接欧几里得距离法 if(cs==8) for(k=1: m) d=d+(X(i,k)-X(j,k))^2; end d=sqrt(d); %直接海明距离法 elseif(cs==9) for(k=1: m) d=d+abs(X(i,k)-X(j,k)); end %直接切比雪夫距离法 else for(k=1: m) if(d d=abs(X(i,k)-X(j,k)); end end end R(i,j)=1-C*d; end end (3)聚类(求动态聚类图) <1>传递闭包法 根据标定所得的模糊矩阵,只是一个模糊相似矩阵R,不一定具有传递性,即R不一定是模糊等价矩阵,还需要对其改造成模糊等价矩阵R’,根据定理,用二次方法求传递闭包t(R),t(R)就是所求模糊等价矩阵R’,即: t(R)=R’,再让 由大变到小,就可形成动态聚类图。 通过matlab软件编的函数F_JIDtjl.m【见附录3.6】,得到动态聚类图或者直接运用matlab软件编的函数F_Jlfx.m【见附录3.7】,运行F_Jlfx(2,8,A)得动态聚类图是: 附录3.6: functionF_JIDtjl(R)%定义函数 %模糊聚类分析动态聚类 %R模糊相似矩阵 [m,n]=size(R);%获得矩阵的行列数 if(m~=n|m==0)return;end for(i=1: n)R(i,i)=1;%修正错误 for(j=i+1: n) if(R(i,j)<0)R(i,j)=0; elseif(R(i,j)>1)R(i,j)=1;end R(i,j)=round(10000*R(i,j))/10000;%保留四位小数 R(j,i)=R(i,j); end end js0=0; while (1)%求传递闭包 R1=Max_Min(R,R);%【见附录3.6.1】 js0=js0+1; if(R1==R)break;elseR=R1;end end Imd (1)=1;k=1; for(i=1: n)for(j=i+1: n)pd=1;%找出所有不相同的元素 for(x=1: k) if(R(i,j)==Imd(x))pd=0;break;end;end if(pd)k=k+1;Imd(k)=R(i,j);end end;end for(i=1: k-1)for(j=i+1: k) if(Imd(i) x=Imd(j);Imd(j)=Imd(i);Imd(i)=x; end;end;end for(x=1: k)%按Imd(x)分类,分类数为flsz(x),临时用Sz记录元素序号 js=0;flsz(x)=0; for(i=1: n)pd=1; for(y=1: js)if(Sz(y)==i)pd=0;break;end;end if(pd) for(j=1: n) if(R(i,j)>=Imd(x))js=js+1;Sz(js)=j;end;end flsz(x)=flsz(x)+1; end end end for(i=1: k-1) for(j=i+1: k) if(flsz(j)==flsz(i))flsz(j)=0;end;end;end fl=0;%排除相同的分类 for(i=1: k)if(flsz(i))fl=fl+1;Imd(fl)=Imd(i);end;end for(i=1: n)xhsz(i)=i;end for(x=1: fl)%获得分类情况: 对元素分类进行排序 js=0;flsz(x)=0; for(i=1: n)pd=1; for(y=1: js)if(Sz(y)==i)pd=0;break;end;end if(pd)if(js==0)y=0;end for(j=1: n)if(R(i,j)>=Imd(x))js=js+1;Sz(js)=j;end;end flsz(x)=flsz(x)+1; Sz0(flsz(x))=js-y; end end js0=0; for(i=1: flsz(x)) for(j=1: Sz0(i))Sz1(j)=Sz(js0+j);end for(j=1: n)for(y=1: Sz0(i)) if(xhsz(j)==Sz1(y)) js0=js0+1;Sz(js0)=xhsz(j);end;end;end end for(i=1: n)xhsz(i)=Sz(i);end end for(x=1: fl)%获得分类情况: 每一子类的元素个数 js=0;flsz(x)=0; for(i=1: n)pd=1; for(y=1: js)if(Sz(y)==i)pd=0;break;end;end if(pd)if(js==0)y=0;end for(j=1: n)if(R(i,j)>=Imd(x))js=js+1;Sz(js)=j;end;end flsz(x)=flsz(x)+1;Sz0(flsz(x))=js-y; end end js0=1; for(i=1: flsz(x))y=1; for(j=1: flsz(x)) if(Sz(y)==xhsz(js0))flqksz(x,i)=Sz0(j);js0=js0+Sz0(j);break;end y=y+Sz0(j); end end end F_dtjltx=figure('name','动态聚类图','color','w'); axis('off'); Kd=30;Gd=40;y=fl*Gd+Gd;lx=80; text(24,y+Gd/2,'λ'); for(i=1: n) text(lx-5+i*Kd-0.4*Kd*(xhsz(i)>9),y+Gd/2,int2str(xhsz(i))); line([lx+i*Kd,lx+i*Kd],[y,y-Gd]); linesz(i)=lx+i*Kd; end text(lx*1.5+i*Kd,y+Gd/2,'分类数'); y=y-Gd; for(x=1: fl) text(8,y-Gd/2,num2str(Imd(x))); js0=1;js1=0; if(x==1) for(i=1: flsz(x)) js1=flqksz(x,i)-1; if(js1)line([linesz(js0),linesz(js0+js1)],[y,y]);end line([(linesz(js0+js1)+linesz(js0))/2,(linesz(js0+js1)+linesz(js0))/2],[y,y-Gd]); linesz(i)=(linesz(js0+js1)+linesz(js0))/2; js0=js0+js1+1; end elsefor(i=1: flsz(x)) js1=js1+flqksz(x,i); js2=0;pd=0; for(j=1: flsz(x-1)) js2=js2+flqksz(x-1,j); if(js2==js1)pd=1;break;end end if(j~==js0)line([linesz(js0),linesz(j)],[y,y]);end line([(linesz(js0)+linesz(j))/2,(linesz(js0)+linesz(j))/2],[y,y-Gd]); linesz(i)=(linesz(js0)+linesz(j))/2; js0=j+1; end;end text(2*lx+n*Kd,y-Gd/3,int2str(flsz(x))); y=y-Gd; end 图六: 动态聚类图 根据动态聚类图,选定不同的 的值,将就可以得到不同的分类。 附录3.5: (仅附录了一段用到的程序) function[R]=F_jir(cs,X) %cs==8,直接欧几里得距离法 %cs==9,直接海明距离法(绝对值减数法) %cs==10,直接切比雪夫距离法 elseif(cs<=10) C=0; for(i=1: n) for(j=i+1: n) d=0; %直接欧几里得距离法 if(cs==8) for(k=1: m) d=d+(X(i,k)-X(j,k))^2; end d=sqrt(d); %直接海明距离法 elseif(cs==9) for(k=1: m) d=d+abs(X(i,k)-X(j,k)); end %直接切比雪夫距离法 else for(k=1: m) if(d d=abs(X(i,k)-X(j,k)); end end end if(C C=d; end end end C=1/(1+C); for(i=1: n) for(j=1: n) d=0; %直接欧几里得距离法 if(cs==8) for(k=1: m) d=d+(X(i,k)-X(j,k))^2; end d=sqrt(d); %直接海明距离法 elseif(cs==9) for(k=1: m) d=d+abs(X(i,k)-X(j,k)); end %直接切比雪夫距离法 else for(k=1: m) if(d d=abs(X(i,k)-X(j,k)); end end end R(i,j)=1-C*d; end end 附录3.6.1 function[C]=Max_Min(A,B) %模糊矩阵的合成运算,先取大,后取小 [m,s]=size(A);[s1,n]=size(B);C=[]; if(s1~=s)return;end for(i=1: m)for(j=1: n)C(i,j)=0; for(k=1: s)x=0; if(A(i,k) elsex=B(k,j);end if(C(i,j) end end;end 附录3.7: functionF_jlfx(bzh,fa,X) %模糊聚类分析 %bah数据标准型;fa建立模糊相似矩阵的方法;X原始数据矩阵 X=F_jisjbzh(bzh,X); R=F_jir(fa,X); [m,n]=size(R); if(m~=n|m==0) return; end F_JIDtjl(R)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 模糊 程序