matlab模糊聚类程序.docx

上传人:b****1 文档编号:11078632 上传时间:2023-05-29 格式:DOCX 页数:15 大小:122.72KB
下载 相关 举报
matlab模糊聚类程序.docx_第1页
第1页 / 共15页
matlab模糊聚类程序.docx_第2页
第2页 / 共15页
matlab模糊聚类程序.docx_第3页
第3页 / 共15页
matlab模糊聚类程序.docx_第4页
第4页 / 共15页
matlab模糊聚类程序.docx_第5页
第5页 / 共15页
matlab模糊聚类程序.docx_第6页
第6页 / 共15页
matlab模糊聚类程序.docx_第7页
第7页 / 共15页
matlab模糊聚类程序.docx_第8页
第8页 / 共15页
matlab模糊聚类程序.docx_第9页
第9页 / 共15页
matlab模糊聚类程序.docx_第10页
第10页 / 共15页
matlab模糊聚类程序.docx_第11页
第11页 / 共15页
matlab模糊聚类程序.docx_第12页
第12页 / 共15页
matlab模糊聚类程序.docx_第13页
第13页 / 共15页
matlab模糊聚类程序.docx_第14页
第14页 / 共15页
matlab模糊聚类程序.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

matlab模糊聚类程序.docx

《matlab模糊聚类程序.docx》由会员分享,可在线阅读,更多相关《matlab模糊聚类程序.docx(15页珍藏版)》请在冰点文库上搜索。

matlab模糊聚类程序.docx

matlab模糊聚类程序

 

3•数据标准化

(1)数据矩阵

设论域U二伪必匹,%庞,沧,冷必压必0,为1必2}为被分类的对象,每个

对象又由指标Y={%,%,%,%,%,丫6,%,%』9}表示其性状即

Xi={冷,x2,x3,x4,x5,xi6,xi7,為Xi9,XlO’Xll,冷分(i=1,2,…,12)于是得到原

是数据矩阵

7

5

2

5

0

1

3

4

2

12

17

8

21

9

2

38

4

37

83

29

59

65

37

20

54

13

26

53

13

31

36

21

23

12

18

14

178

69

112

78

104

36

94

31

47

23

25

36

11

12

11

24

6

16

A=

101

32

53

52

86

52

41

38

94

28

6

7

8

8

2

0

3

29

169

51

58

72

49

30

48

37

146

327

91

126

92

89

69

79

29

49

93

27

54

64

24

17

23

11

49

18

7

9

5

1

2

18

3

8

(2)数据标准化

运用matlab编程由函数F」isjbzh.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);endxk=xk/n;sk=0;

for(i=1:

n)sk=sk+(X(i,k)-xkF2;endsk=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);endif(xmax

for(i=1:

n)X(i,k)=(X(i,k)-xmin)/(xmax-xmin);endend

end

0

0

0

0

0

0

0.0319

0.0286

0

0.0156

0.1395

0.0484

0.1839

0.0865

0.0147

0.404302860.2431

0.2375

0.2791

0.4597

0.6897

0.3558

0.2794

0.5745

0.2857

0.1667

0.1437

0.0930

0.2339

0.3563

0.2019

0.3235

0.1277

0.4286

0.0833

0.5344

0.7442

0.8871

0.8391

1.0000

0.5147

1.0000

0.8000

0.3125

0.0500

0.2326

0.2742

0.0690

0.1154

0.1471

0.2553

0.0857

0.0972

0.2938

0.3140

0.4113

0.5402

0.8269

0.7500

0.4362

1.0000

0.6389

0.0656

0.0116

0.0403

0.0345

0.0769

0.0147

0

0

0.1875

0.5062

0.5349

0.4516

0.7701

0.4712

0.4265

0.5106

0.9714

1.0000

1.0000

1.0000

1.0000

1.0000

0.8558

1.0000

0.8404

0.7429

0.3264

0.2687

0.2558

0.4194

0.6782

0.2308

0.2353

0.2447

0.2286

0.3264

0.0344

0.0233

0.0565

0

0.0096

0.0147

0.1915

0

0.0417

B=

第二步:

标定(建立模糊相似矩阵)

对标定我们运用了直接欧几里得距离法:

rij1cd(Xi,Xj)

其中c为任意选区的参数,它使得0Nj<1,d(Xi,Xj)表示x与Xj的距离,

运用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)F2;

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)F2;

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)

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;endflsz(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

endif(j~==js0)

line([linesz(js0),linesz(j)],[y,y]);endline([(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

图六:

动态聚类图

 

根据动态聚类图,选定不同的的值,将就可以得到不同的分类

12

11

10

9

8

7

S

 

 

附录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)F2;

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)F2;

end

d=sqrt(d);

%直接海明距离法

elseif(cs==9)for(k=1:

m)

d=d+abs(X(i,k)-X(j,k));

end

%直接切比雪夫距离法

elsefor(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)

X原始数据矩阵

%模糊聚类分析

%bah数据标准型;fa建立模糊相似矩阵的方法;

X=F_jisjbzh(bzh,X);

R=F_jir(fa,X);

[m,n]=size(R);

if(m~=n|m==0)

return;

end

F_JIDtjl(R)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2