• 大小: 127KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-16
  • 语言: Matlab
  • 标签: KNNC均值  

资源简介

根据算法原理自己编写的基本算法的代码,包括自己挑选的数据集,对算法准确率的测试

资源截图

代码片段和文件信息

%层次聚类
load fcmdata.dat
x=fcmdata;
length=size(x1);
%设置矩阵存储聚类中心及类中的样本个数
y=zeros(lengthlength);
z=zeros(length1);
T=1;%距离阈值
leishu=3;%需要分的类数
t=length-leishu;
%思路
 %1.算出距离矩阵
 %2.求出最小距离
 %3.更新距离矩阵
 %4.在类别矩阵后面加类号
 %5.重复上面
%
%1.算出距离矩阵140 *140 用矩阵Y存储%

for(i=1:length)
    for(j=1:length)
        if(i>=j)
        y(ij)=(x(i1)-x(j1))^2+(x(i2)-x(j2))^2;
        y(ij)=y(ij)^(1/2);
        else
            y(ij)=1000;
        end
    end
end
sprintf(‘%.0f‘leishu)
for(n=1:t)
  
%求出最小距离% 
temp=1000;
for(i=1:length)
    for(j=1:length) 
        if(y(ij)~=0&&y(ij)<=temp)
            temp=y(ij);
            
        end
    end
end
%if(temp>T)
 %   break;
%end
%寻找最小距离的点ij%
i1=0;j1=0;
for(i=1:length)
    for(j=1:length)
        if(temp==y(ij))
            i1=i;
            j1=j;
        end
    end
end
sprintf(‘%.4f‘temp);
sprintf(‘%.0f‘i1);
sprintf(‘%.0f‘j1);
%更新矩阵%
for(t=1:length)
    if(y(i1t)>y(j1t)&&y(j1t)~=0)
        y(i1t)=y(j1t);
    end
    if(j1~=t)
    y(j1t)=1000;
    end
end
for(t=1:length)
    if(y(ti1)>y(tj1)&&y(tj1)~=0&&y(ti1)~=1000)
        y(ti1)=y(tj1);
    end
    if(y(tj1)~=0)
        y(tj1)=1000;
    end
end
%类别矩阵加上类号%
if(z(i11)==0&&z(j11)==0)
    z(i11)=i1;
    z(j11)=i1;
elseif(z(i11)~=0&&z(j11)==0)
    z(j11)=z(i11);   
elseif(z(i11)==0&&z(j11)~=0)
    z(i11)=z(j11);
else
    for(t=1:length)
        if(z(t1)==z(j11))
            z(t1)=z(i11);
        end
    end
end

end
% for(t=1:140)
%    for(m=1:t)
%       if(y(tm)~=0&&y(tm)~=1000)
%            t
%            m
%        end
%   end
% end
%查询类号%
cs=1; 
m=zeros(1leishu);
flag=0;
m(1cs)=z(11);
for(t=2:length)
   
    for(b=1:cs)
        if(z(t1)==m(1b))
            flag=1;
            break;
        end 
    end
    if(flag==0)
    cs=cs+1;
    m(1cs)=z(t1);
    end
    flag=0;
end

%画图显示%
hold on
for(t=1:length)
    if(z(t1)==m(11))
        plot(x(t1)x(t2)‘+r‘);
    elseif(z(t1)==m(12))
        plot(x(t1)x(t2)‘+b‘);
    elseif(z(t1)==m(13))
        plot(x(t1)x(t2)‘+g‘);
%     elseif(z(t1)==m(14))
%         plot(x(t1)x(t2)‘+y‘);
    end
end
            
   




    



 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        769  2015-04-17 15:50  matlab1.mat

     文件       1094  2015-04-17 15:50  matlab2.mat

     文件        599  2015-04-17 15:52  matlab3.mat

     文件        611  2015-04-17 17:59  matlab4.mat

     文件      37308  2015-04-17 17:59  matlab5.mat

     文件          4  2015-04-17 18:55  Untitled9.asv

     文件          4  2015-04-17 18:57  Untitled9.m

     文件       1536  2015-04-03 09:30  userkey.psw

     文件       2397  2015-04-18 09:18  cengcijulei.m

     文件       2386  2015-04-17 10:39  cengcijulei.m.bak

     文件       2323  2015-04-17 10:23  clust123.asv

     文件       2332  2015-04-18 09:18  clust123.m

     文件       2319  2015-04-17 10:36  clust123.m.bak

     文件       1622  2015-03-26 09:19  clust333.asv

     文件       1736  2015-04-18 09:18  clust333.m

     文件       1723  2015-03-31 20:44  clust333.m.bak

     文件       1696  2015-04-17 18:55  KNN.asv

     文件       1717  2015-04-17 20:10  KNN.m

     文件      79610  2015-04-16 22:08  matlab.mat

----------- ---------  ---------- -----  ----

               141786                    19


评论

共有 条评论

相关资源