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

📄 knn.m

📁 一个聚类程序
💻 M
字号:
%x,y的横纵坐标为(1,10),在此空间中分成了5类   样本落在  x,y~[1,3] 空间中别分为为第一类;
%x,y~(3,5]为第二类;x~[1,5],y~[5,10]为第三类;x,y~[5,10]为第四类;x~[5,10],y~[1,5]为第五类;
function TestClasses=knn(k,GlassData,GlassClasses,TestData)
 GlassData1=rand(50,2)*10;
 GlassData2=rand(50,2)*20;
 TestData=rand(50,2);
 GlassData=[GlassData1;GlassData2]
 k=6;
 GlassClasses1=ones(50,1);
 GlassClasses2=zeros(50,1);
 GlassClasses=[GlassClasses1;GlassClasses2]
 GlassData0=averageM(GlassData);
TestData0=averageM(TestData);
[rowTest,colTest]=size(TestData0);
TestClasses=zeros(rowTest,1);
for ii=1:rowTest(1,1)
    S=size(GlassData0);
    N=S(1,1);
    D=zeros(N,1);
    for jj=1:N
        Distance=0;
        for kk=1:colTest(1,1)
            Distance=Distance+(GlassData0(jj,kk)-TestData0(ii,kk))^2;
        end
        D(jj,1)=sqrt(Distance);
    end
    TempM0=[rot90(D);rot90(GlassClasses)];
    TempM1=rot90(TempM0,3);
    TempM=sortrows(TempM1,2);
    Ncout=zeros(6,2);
    for nnn=1:6
        Ncout(nnn,2)=nnn;
    end
    for count=1:k
        switch TempM(count,1)
            case 1
                Ncout(1,1)=Ncout(1,1)+1;
            case 2
                Ncout(2,1)=Ncout(2,1)+1;
            case 3
                Ncout(3,1)=Ncout(3,1)+1;
            case 4
                Ncout(4,1)=Ncout(4,1)+1;
            case 5
                Ncout(5,1)=Ncout(5,1)+1;
            case 6
                Ncout(6,1)=Ncout(6,1)+1;
        end
    end
    Ncoutsort=sortrows(Ncout);
    TestClasses(ii,1)=Ncoutsort(6,2);
    fprintf('TestData(%d)别划分为第(%d)类\n',ii,Ncoutsort(6,2));
end
plot(GlassData1(:,1),GlassData1(:,2),'b .');hold on;
plot(GlassData2(:,1),GlassData2(:,2),'b *');hold on;
for i=1:rowTest
    s=int2str(i);
    text(TestData(i,1),TestData(i,2),s);
end 
plot(X11,X12,'r .');hold on;
for j=1:rowTest
    s=int2str(GlassClasses(j,1));
    text(GlassData(j,1),GlassData(j,2),s);
end 
%plot(X111,X121,'r-');plot(X112,X122,'r-');plot(X113,X123,'r-');plot(X114,X124,'r-');plot(X115,X125,'r-');
title('样本和测试的分布');legend('测试数据','样本数据');

⌨️ 快捷键说明

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