最短距离聚类的matlab实现
最短距离聚类的matlab 实现 说明:正文中命令部分可以直接在 Matlab 中运行,作者(Yangfd09)在 MATLAB R2009a(7.8.0.347)中运行通过 %最短距离聚类 %说明:此程序的优点在于每一步都是自己编写的,很少用 matlab 现成的指令, %所以更适合于初学者,有助于理解各种标准化方法和距离计算方法。 %程序包含了极差标准化(两种方法) 、中心化、标准差标准化、总和标准化和极大值标准 化等标准化方法, %以及绝对值距离、欧氏距离、明科夫斯基距离和切比雪夫距离等距离计算方法。 %==========================>>导入数据>标准化=m(i)m(i)=testdata(i,j);endif testdata(i,j)>选择标准化方式,计算距离>如果需要计算明科夫斯基距离,把对应程序行前面的“%”删去即可 %if(1) % a=( 计算明可夫斯基距离?(Y/N ) , s ); % if(a== Y ||a== y ) % d_ming0=zeros(M,M); % p=( 输入参数 p: , s ); % p=str2double(p); % end %end for i=1:Mfor j=1:Mfor k=1:Nd_abs(i,j)=d_abs(i,j)+abs(test(i,k)-test(j,k));d_ou0(i,j)=d_ou0(i,j)+(test(i,k)-test(j,k))^2;d_qie0(k)=abs(test(i,k)-test(j,k)); % if(a== Y ||a== y ) % d_ming0(i,j)=d_ming0(i,j)+abs(test(i,k)-test(j,k))^p; % endend d_qie(i,j)=max(d_qie0);end end d_ou=sqrt(d_ou0); %if(a== Y ||a== y )d_ming=(d_ming0).^(1/p);end %=================>>选择距离,进行最短距离聚类test(i,j)x=i;y=j;endend end t=t+1; str=[ 第 ,num2str(t), 步:lambda= ,num2str(min), >> 合并 G( ,.num2str(a(x)), )和 G( ,num2str(a(y)), ) , 记为 G( ,num2str(t+MM), ) ]; disp(str) a([x,y])=[]; if(~isempty(a))a(end+1)=t+35; end g=zeros(1,M-2); ii=0; for i=1:Mif(i==x||i==y);elseii=ii+1;g(ii)=(test(x,i)=test(y,i))*test(y,i);end end test([x,y],:)=[];