-
大小: 1KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-05-09
- 語言: Matlab
- 標(biāo)簽:
資源簡介
將模糊集理論和k-means聚類聯(lián)系起來,設(shè)計(jì)了模糊k-means聚類算法,其聚類效果比單純的k-means要好。

代碼片段和文件信息
clear?all;
n=100;
k=5;
q=3;
x=[0?1000;?0?1000];
cs=5;
ps=20;
sd=60;
X=nngenc(xcspssd);
%X=fix(1000*rand(2n));%隨機(jī)產(chǎn)生n個(gè)數(shù)作為對象,(X(1,j),X(2,j))為一個(gè)對象。
%load?X.mat;
X1=[1:n];
X=X/1000;
meandistance=getmeandistance(X);
while(1)
????Y=randsample(X1k);???%隨機(jī)產(chǎn)生k個(gè)簇中心
????int?h;?h=3;E(1)=-1;E(2)=-2;E(3)=-3;
????for?p=1:k?????????????%把初始值放入均值數(shù)組Z中
????????Z(1p)=X(1Y(p));
????????Z(2p)=X(2Y(p));
????end
????r=1;
????for?j=1:k
????????for(w=(j+1):k)
???????????if(distance(Z(1j)Z(2j)Z(1w)Z(2w))<(meandistance/2));
???????????????r=0;
???????????end
????????end
????end
????if(r==1)
????????break;
????end
end
%?Z(11)=0.100;Z(12)=0.640;Z(13)=0.400;Z(14)=0.800;Z(15)=0.900;
%?Z(21)=0.200;Z(22)=0.300;Z(23)=0.190;Z(24)=0.700;Z(25)=1.000;
while(1)
????
????for?j=1:k
????????plot(Z(1j)Z(2j)‘Marker‘‘o‘?‘MarkerEdgeColor‘‘k‘?‘MarkerFaceColor‘[1/j01/j]‘markersize‘10);
????????hold?on;
????????axis([-0.1?1.1?-0.1?1.1]);grid?on
????????%pause(0.00001);
????end
????%plot(X(1:)X(2:)‘.‘);
????
???for?j=1:n?????????????%計(jì)算X(i)屬于第j簇的隸屬度Wij。
???????for?p=1:k
???????????D(p)=distance(X(1j)X(2j)Z(1p)Z(2p));
???????????if(D(p)==0)
????????????????A(pj)=1;
???????????else?A(pj)=(1/(D(p)^2))^(1/(q-1));
???????????end
???????end
???????s=sum(A(:j));
???????for?p=1:k
???????????A(pj)=A(pj)/s;
???????end?????????
???end
???
???double?e;?e=0;???????
???for?j=1:n???????????%計(jì)算目標(biāo)函數(shù)
???????for?p=1:k
???????????d=distance(X(1j)X(2j)Z(1p)Z(2p));
???????????e=e+(A(pj)^q)*(d^2);
???????end
???end
??
???
???double?s1;double?s2;double?s3;
???for?p=1:k????????????%重新計(jì)算簇均值Cj
???????s1=0;s2=0;s3=0;
???????for?j=1:n
???????????s1=s1+(A(pj)^q)*(X(1j));
???????????s2=s2+(A(pj)^q)*(X(2j));
???????????s3=s3+(A(pj)^q);
???????end
???????Z(1p)=s1/s3;
???????Z(2p)=s2/s3;???
???end
???
???E(h)=e;
???if((E(h)==E(h-1))&(E(h)==E(h-2)))
???????break;
???end
???h=h+1;
end
for?j=1:n
????%for?p=1:k
????????[av]=max(A(:j));
????????plot(X(1j)X(2j)‘Marker‘‘o‘?‘MarkerEdgeColor‘‘k‘?‘MarkerFaceColor‘[(100-20*v)/1000(20*v)/100]);
????????hold?on;
???????%?pause(0.0001);
end
axis([-0.1?1.1?-0.1?1.1]);grid?on
????????
???
???
???
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????2343??2011-04-22?15:25??fuzzykmeans.m
-----------?---------??----------?-----??----
?????????????????2343????????????????????1
評論
共有 條評論