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


 數據下載點擊打開鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章