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

📄 kmean.m

📁 这是一个模式识别中的K均值算法的一个简单仿真分类实例
💻 M
字号:
fid=fopen('E:\研究生课程\模式识别课程\homework1_1007\test1.TXT','r');   
test1=fscanf(fid,'%f %f %c',[3,inf]);
fclose(fid);
f2=[0;0];
f1=[0;0];
N1=10;
N2=11;
for i=1:N1
    f1(1,1)=f1(1,1)+test1(1,i);
    f1(2,1)=f1(2,1)+test1(2,i);
end;
f1mean=f1/N1;
for i=N2:35
    f2(1,1)=f2(1,1)+test1(1,i);
    f2(2,1)=f2(2,1)+test1(2,i);
end;
f2mean=f2/N2;
J1=0;
J2=0;
J=0;
for i=1:N1
    J1=J1+(test1(1,i)-f1mean(1,1))*(test1(2,i)-f1(2,1));

end;
for i=N2:35
    J2=J2+(test1(1,i)-f1mean(1,1))*(test1(2,i)-f1(2,1));
end;
J=J1+J2;

detaJ=0;
for k=1:35
    if(k<N1)
        detaJ=N2/(N2+1)*J2-N1/(N1-1)*J1;
        if(detaJ>0)
            plot(k,test1(1,k),'k+');
        end;
        if(detaJ<0)
            plot(k,test1(1,K),'r*');
            f1=f1-test1(1:2,k);
            f2=f2+test1(1:2,k);
            N1=N1-1;
            N2=N2+1;
            f1mean=f1/N1;
            f2mean=f2/N2;
            J1=0;
            J2=0;
            J=0;            
            for i=1:10
                 J1=J1+(test1(1,i)-f1mean(1,1))*(test1(2,i)-f1(2,1))-(test1(1,k)-f1mean(1,1))*(test1(2,k)-f1(2,1));
            end;
            for i=11:35
                J2=J2+(test1(1,i)-f1mean(1,1))*(test1(2,i)-f1(2,1))+(test1(1,k)-f1mean(1,1))*(test1(2,k)-f1(2,1));
            end;
            J=J1+J2;
            detaJ=0;
        end;
        hold on;
    end;
      
     if(k>N1)
        detaJ=N1/(N1+1)*J1-N2/(N2-1)*J2;
        if(detaJ>0)
            plot(k,test1(1,k),'r*');
        end;
        if(detaJ<0)
            plot(k,test1(1,k),'k+');
            f1=f1+test1(1:2,k);
            f2=f2-test1(1:2,k);
            N1=N1+1;
            N2=N2-1;
            f1mean=f1/N1;
            f2mean=f2/N2;
            J1=0;
            J2=0;
            J=0;            
            for i=1:10
                  J1=J1+(test1(1,i)-f1mean(1,1))*(test1(2,i)-f1(2,1))+(test1(1,k)-f1mean(1,1))*(test1(2,k)-f1(2,1));
            end;
            for i=11:35
                   J2=J2+(test1(1,i)-f1mean(1,1))*(test1(2,i)-f1(2,1))-(test1(1,k)-f1mean(1,1))*(test1(2,k)-f1(2,1));
            end;
        end;
         J=J1+J2;
         detaJ=0;
    end;
    hold on;
end;
title('K-means聚类');
xlabel('测试序号'),ylabel('身高(cm)');
        
        
        

   


⌨️ 快捷键说明

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