• 大小: 3KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-18
  • 语言: Matlab
  • 标签: 粒子群  聚类  

资源简介

自己编写的粒子群(PSO)算法优化Kmeans聚类的MATLAB代码,MATLAB6.5/7.1测试通过,其它版本没测试。

资源截图

代码片段和文件信息

clc;clear all;
format long;
%------初始化------------求最小值
%数据,已经归一化
sam=[1.0000    1.0000    0.7476    0.6267    0.1696    0.0710    0.2532    0.8110
    0.3188    0.3656    0.8707    0.7704    0.5559    0.5153    0.9213    0.7017
    0.5548    0.7423    1.0000    0.5910    1.0000    1.0000    0.8976    1.0000
    0.7800    0.7181    0.6875    1.0000    0.2115    0.0214    0.1573    0.8938
    0.2680    0.3238    0.9036    0.8210    0.5874    0.3840    0.7037    0.5142
    0.6928    0.6630    0.7368    0.8787    0.1818    0.0786    0.2295    0.3820
    0.4256    0.4978    0.8429    0.9161    0.7133    0.3130    1.0000    0.7809];
N=50;%粒子数
c1=1.2;c2=1.2;
wmax=0.9;wmin=0.4;
M=200;%代数
K=3;%类别数,根据需要修改%%%%%%%%%%%%%%%%%%%%%%%%
[S D]=size(sam);%%样本数和特征维数
v=rand(NK*D);%初始速度
%初始化分类矩阵
for i=1:N
clmat(i:)=randperm(S);
clmat(iclmat(i:)>K)=ceil(rand(1sum(clmat(i:)>K))*K);
end
fitt=inf*ones(1N);%初始化个体最优适应度
fg=inf;%初始化群体最优适应度
fljg=clmat(1:);%当前最优分类
x=zeros(NK*D);%初始化粒子群位置
y=x;%初始化个体最优解
pg=x(1:);%初始化群体最优解
cen=zeros(KD);%类别中心定维
fitt2=fitt;%粒子适应度定维
%------循环优化开始------------
for t=1:M
for i=1:N
   ww = zeros(SK);%
   for ii = 1:S
       ww(iiclmat(iii)) = 1;%加权矩阵,元素非0即1
   end
   ccc=[];tmp=0;
   for j = 1:K
        sumcs = sum(ww(:j)*ones(1D).*sam);
        countcs = sum(ww(:j));       
       if cou

评论

共有 条评论