在MATLAB中實現KNN分類器

思路

  1. 導入訓練數據:5位同學各自得兩門學科(數學和電子)得成績以及對應結果(過關和沒過關)
  2. 選定k值
  3. 輸入測試樣本:新來的一位同學兩門學科的成績
  4. 計算和訓練數據之間的距離,並排序
  5. 選取距離最近的k個訓練數據的結果中出現頻率最高的結果作為最後預測的結果

具體代碼

<code>clc
clear all
close all
warning off
x=[4 6 7 5 8];
y=[3 7 8 5 8];
c=["Fail","Pass","Pass","Fail","Pass"];
k=3;
a=6;
b=8;
distance=[];
for i=1:length(x)
e=sqrt((x(i)-a)^2+(y(i)-b)^2);
distance=[distance e];
end
temp=0;
gemp=0;
for i=1:length(distance)
for j=1:(length(distance)-i)
if(distance(j)>distance(j+1))
temp=distance(j);
distance(j)=distance(j+1);
distance(j+1)=temp;
gemp=c(j);
c(j)=c(j+1);
c(j+1)=gemp;
end
end
end
classy=[];
for i=1:k
classy=[classy c(i)];
end
output=string(mode(categorical(classy)))/<code>

結果展示


在MATLAB中實現KNN分類器


分享到:


相關文章: