搜档网
当前位置:搜档网 › matlab模糊聚类程序

matlab模糊聚类程序

matlab模糊聚类程序
matlab模糊聚类程序

3.数据标准化

(1) 数据矩阵

设论域12345678910,1112U={,,,,,,,,,,}x x x x x x x x x x x x 为被分类的对象,每个

对象又由指标123456789Y={,,,,,,,,}y y y y y y y y y 表示其性状即12345678910,1112x ={,,,,,,,,,,}i i i i i i i i i i i i i x x x x x x x x x x x x (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 A= 23 12 18 14 178 69 112 78 104 36 94 31 47 23 25 36 11 12 11 24 6 16 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) 数据标准化

将模糊矩阵的每一个数据压缩到[0,1]上,采用平移.极差变换进行数据标准化

1i n

1i n 1i n A(i,k)-{A(i,k)}B(i,k)={A(i,k)}-{A(i,k)}

min max min ≤≤≤≤≤≤ (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

0 0 0 0 0 0 0.0319 0.0286 0 0.0156 0.1395 0.0484 0.1839 0.0865 0.0147 0.4043 0.B=0286 0.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?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? 第二步:标定(建立模糊相似矩阵)

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

ij r 1c d(x ,x )i j =-?

其中c 为任意选区的参数,它使得0≤ij r ≤1,d(x ,x )i j 表示i x 与j x 的距离,

(,)i j d x x =运用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

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

1.0000 0.8596 0.6731 0.7995 0.3715 0.8668 0.4930 0.9383 0.4602 0.2745 0.7151 0.9499 0.8596 1.0000 0.7638 0.8150 0.4634 0.8973 0.5608 0.87R =46 0.5490 0.3541 0.7866 0.8972 0.6731 0.7638 1.0000 0.8140 0.6694 0.7736 0.6961 0.6907 0.6812 0.5618 0.8907 0.7016 0.7995 0.8150 0.8140 1.0000 0.5349 0.8534 0.6705 0.8105 0.6204 0.4449 0.8491 0.8063 0.3715 0.4634 0.6694 0.5349 1.0000 0.4863 0.7104 0.3928 0.6905 0.7863 0.5998 0.4001 0.8668 0.8973 0.7736 0.8534 0.4863 1.0000 0.5801 0.8755 0.5494 0.3881 0.7991 0.8972

0.4930 0.5608 0.6961 0.6705 0.7104 0.5801 1.0000 0.5216 0.8026 0.6199 0.6783 0.5091 0.9383 0.8746 0.6907 0.8105 0.3928 0.8755 0.5216 1.0000 0.4959 0.2979 0.7446 0.9300 0.4602 0.5490 0.6812 0.6204 0.6905 0.5494 0.8026 0.4959 1.0000 0.6214 0.6852 0.4802 0.2745 0.3541 0.5618 0.4449 0.7863 0.3881 0.6199 0.2979 0.6214 1.0000 0.5161 0.3002 0.7151 0.7866 0.8907 0.8491 0.5998 0.7991 0.6783 0.7446 0.6852 0.5161 1.0000 0.7343 0.9499 0.8972 0.7016 0.8063 0.4001 0.8972 0.5091 0.9300 0.4802 0.3002 0.7343 1.0000

?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? (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:

function F_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;

相关主题