资源简介
将模糊集理论和k-means聚类联系起来,设计了模糊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));%随机产生n个数作为对象,(X(1,j),X(2,j))为一个对象。
%load X.mat;
X1=[1:n];
X=X/1000;
meandistance=getmeandistance(X);
while(1)
Y=randsample(X1k); %随机产生k个簇中心
int h; h=3;E(1)=-1;E(2)=-2;E(3)=-3;
for p=1:k %把初始值放入均值数组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 %计算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 %计算目标函数
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 %重新计算簇均值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
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2343 2011-04-22 15:25 fuzzykmeans.m
----------- --------- ---------- ----- ----
2343 1
- 上一篇:色调,饱和度,亮度图,matlab
- 下一篇:MATLAB随机拓扑生成源码
评论
共有 条评论