在MATLAB中实现KNN分类器

2025-10-19 16:03:00

1、思路

1. 导入训练数据:5位同学各自得两门学科(数学和电子)得成绩以及对应结果(过关和没过关)

2. 选定k值

3. 输入测试样本:新来的一位同学两门学科的成绩

4. 计算和训练数据之间的距离,并排序

5. 选取距离最近的k个训练数据的结果中出现频率最高的结果作为最后预测的结果

2、具体代码

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)))

3、结果展示

在MATLAB中实现KNN分类器

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢