思路
- 导入训练数据: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>
结果展示
閱讀更多 學本無止境 的文章