⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 breastcancerqpso3.asv

📁 K-MEANS聚类算法
💻 ASV
字号:
 function [F_gbest,inter_distance,intra_distance]=breastcancerqpso3(MAXITER)
load breastcancer.mat datavectorcancer;%%%载入数据集
[vectorsize,vectorlength]=size(datavector);
popsize=30; %群体的粒子数%
centroid=2;%聚类的个数
dimension=9; %数据向量维数%
% MAXITER=100;
e=2;
%%%%%%初始化的过程%%%%%%%%
f_xx=zeros(1,popsize);
f_pbest=f_xx;
f_gbest=0;
gbest=zeros(3,4);
SD=zeros(1,3);
f=zeros(1,3);
D=zeros(1,3);
for i=1:popsize
    [c1,c2,c3]=Initialize(datavector);
    partical(i).centroid=[c1;c2;c3];
end
for i=1:popsize
    partical(i).pbest=partical(i).centroid;
    partical(i).p=partical(i).centroid;
end
for i=1:popsize %粒子的个数
     [Je(i)]=f4(partical(i).centroid,centroid,datavector,e);
    f_xx(i)=Je(i);%f_xx(i)代表粒子i当前的适应性值
    f_pbest(i)=f_xx(i);%f_pbest(i)代表粒子i最佳适应性值
end
%初始化f_gbest
 f_gbest=f_pbest(1);
for i=1:popsize
   
    if f_gbest>f_pbest(i)
       f_gbest=f_pbest(i);
   end
end
%%%%%%%%所有初始化过程结束%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
times=1;
while  times<=MAXITER
    z=(1.0-0.5)*(MAXITER-times)/MAXITER+0.5;
   mbest1=zeros(3,4);
     mbest=zeros(3,4);
     for i=1:centroid
         for j=1:popsize
            mbest1(i,:)=mbest1(i,:)+partical(j).pbest(i,:);
         end
     end
     mbest=mbest1/popsize;
 
 for i=1:popsize
     for w=1:centroid
         for j=1:dimension
             fi=rand(1,1);
             partical(i).p(w,j)=fi*partical(i).pbest(w,j)+(1-fi)*gbest(w,j);
             b=z*abs(mbest(w,j)-partical(i).centroid(w,j));
             u=rand(1,1);
             v=log(1/u);
             if (rand(1,1)>0.5)
               partical(i).centroid(w,j)=partical(i).p(w,j)-(b*v);
             else
               partical(i).centroid(w,j)=partical(i).p(w,j)+(b*v);
             end
             MIN=min(datavector(:,j));
             if partical(i).centroid(w,j)<MIN
                partical(i).centroid(w,j)=MIN;
             end
             MAX=max(datavector(:,j));
             if partical(i).centroid(w,j)>MAX
                 partical(i).centroid(w,j)=MAX;
             end
        end
     end
     [center1,f_x(i)] = fcm1(partical(i).centroid,datavector, centroid);
       if f_pbest(i)>f_x(i)
          f_pbest(i)=f_x(i);%f_pbest(i)代表粒子i最佳适应性值
         
       end
   partical(i).pbest=center1;%partical(i).pbest代表粒子i最佳位置
     if  f_gbest>f_pbest(i)
         f_gbest=f_pbest(i);%f_gbest记录全局最佳适应性值
         gbest=partical(i).pbest;%gbest记录全局最佳位置
     end

 end
partical(i).centroid=center1;
F_gbest(times)=f_gbest;
inter_distance1=pdist(gbest);
 inter_distance(times)=sum(inter_distance1)/3;
 
 dist = distfcm(gbest,datavector);       % fill the distance matrix
tmp = dist.^(-2/(e-1));      % calculate new U, suppose expo != 1
U= tmp./(ones(centroid, 1)*sum(tmp));
maxU = max(U);
% Find the data points with highest grade of membership in cluster 1
num1= find(U(1,:) == maxU);
 % Find the data points with highest grade of membership in cluster 2
num2 = find(U(2,:) == maxU);
num3 = find(U(3,:) == maxU);
cluster_num1=length(num1);
cluster_num2=length(num2);
cluster_num3=length(num3);

for i1=1:cluster_num1
    datavector1=datavector(num1(i1));
end
for i2=1:cluster_num2
    datavector2=datavector(num2(i2));
end
for i3=1:cluster_num3
    datavector3=datavector(num3(i3));
end
    X1=datavector1-ones(cluster_num1,1)*gbest(1,:);
    Y1_1=sqrt(sum((X1.^2)'));
    Y1(times)=sum(Y1_1);
    Y1=X1.^2;
    X2=datavector2-ones(cluster_num2,1)*gbest(2,:);
    Y2_2=sqrt(sum((X2.^2)'));
    Y2(times)=sum(Y2_2);
    X3=datavector3-ones(cluster_num3,1)*gbest(3,:);
    Y3_3=sqrt(sum((X3.^2)'));
    Y3(times)=sum(Y3_3);
intra_distance(times)=(Y1(times)+Y2(times)+Y3(times))/3;
 times=times+1;
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -