思路
- 導入訓練數據:5位同學各自得兩門學科(數學和電子)得成績以及對應結果(過關和沒過關)
- 選定k值
- 輸入測試樣本:新來的一位同學兩門學科的成績
- 計算和訓練數據之間的距離,並排序
- 選取距離最近的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>
結果展示
閱讀更多 學本無止境 的文章