matlab knn 对二维二分类问题的实现

load data1;
double temp;
distance=zeros(2,2500);
k=5;
right=0;

for m=2501:1:3000  %测试循环

for i=1:1:2500
    distance(1,i)=sqrt( (data(1,i)-data(1,m))^2 + (data(2,i)-data(2,m))^2 );
    distance(2,i)=data(3,i);
end


for i=1:1:k
    for j=1:1:2500-i
       if(distance(1,j)<distance(1,j+1))
       temp=distance(1,j);
       distance(1,j)=distance(1,j+1);
       distance(1,j+1)=temp;
    
       temp=distance(2,j);
       distance(2,j)=distance(2,j+1);
       distance(2,j+1)=temp;
       end
   end
end

sum1=0;
sum2=0;
for i=2501-k:1:2500
   if(distance(2,i)==1)
     sum1=sum1+1;
    else
     sum2=sum2+1;
   end
end

if(((sum1>sum2)&&(data(3,m)==1))||((sum1<sum2)&&(data(3,m)==-1)))
   right=right+1;
end
   
end


 数据下载点击打开链接

你可能感兴趣的:(matlab knn 对二维二分类问题的实现)