KNN(K-NearestNeighbor)算法Matlab实现

KNN(K-NearestNeighbor)算法Matlab实现%实现KNN算法
%%算法描述
%1、初始化训练集和类别;
%2、计算测试样本与训练集样本的欧⽒距离
%3、根据欧⽒距离⼤⼩对训练集样本进⾏升序排序;
%4、选取欧式距离最⼩的前K个训练样本,统计其在各类别中的频率;
%5、返回频率最⼤的类别,即测试集样本属于该类别。
七台河市高级中学
close all;
clc;
%%算法实现
%step1、初始化训练集、测试集、K值
%创建⼀个三维矩阵,⼆维表⽰同⼀类下的⼆维坐标点,第三维表⽰类别
trainData1=[00;0.10.3;0.20.1;0.20.2];%第⼀类训练数据
trainData2=[10;1.10.3;1.20.1;1.20.2];%第⼆类训练数据
trainData3=[01;0.11.3;0.21.1;0.21.2];%第三类训练数据
trainData(:,:,1)=trainData1;%设置第⼀类测试数据
trainData(:,:,2)=trainData2;%设置第⼆类测试数据
trainData(:,:,3)=trainData3;%设置第三类测试数据
trainDim=size(trainData);%获取训练集的维数
testData=[1.60.3];%设置1个测试点
K=7;
%%分别计算测试集中各个点与每个训练集中的点的欧⽒距离
%把测试点扩展成矩阵
testData_rep=repmat(testData,4,1);
%设置三个⼆维矩阵存放测试集与测试点的扩展矩阵的差值平⽅
%diff1=zero(trainDim(1),trianDim(2));
%diff2=zero(trainDim(1),trianDim(2));
%diff3=zero(trainDim(1),trianDim(2));
for i=1:trainDim(3)
diff1=(trainData(:,:,1)-testData_rep).^2;
diff2=(trainData(:,:,2)-testData_rep).^2;
diff3=(trainData(:,:,3)-testData_rep).^2;
end
型男耀广西
%设置三个⼀维数组存放欧式距离
distance1=(diff1(:,1)+diff1(:,2)).^0.5;
distance2=(diff2(:,1)+diff2(:,2)).^0.5;tau蛋白
distance3=(diff3(:,1)+diff3(:,2)).^0.5;
%将三个⼀维数组合成⼀个⼆维矩阵
temp=[distance1 distance2 distance3];
%将这个⼆维矩阵转换为⼀维数组
distance=reshape(temp,1,3*4);
%对距离进⾏排序
distance_sort=sort(distance);
%⽤⼀个循环寻最⼩的K个距离⾥⾯那个类⾥出现的频率最⾼,并返回该类
num1=0;%第⼀类出现的次数
num2=0;%第⼆类出现的次数
num3=0;%第三类出现的次数
sum=0;%sum1,sum2,sum3的和
for i=1:K
for j=1:4
if distance1(j)==distance_sort(i)旋转倒立摆
num1=num1+1;
end
if distance2(j)==distance_sort(i)
num2=num2+1;
end
if distance3(j)==distance_sort(i)
num3=num3+1;
end
end
sum=num1+num2+num3;
if sum>=K
break;
end
end
class=[num1 num2 num3];
classname=find(class(1,:)==max(class));
fprintf('测试点(%f %f)属于第%d类',testData(1),testData(2),classname);  %%使⽤绘图将训练集点和测试集点绘画出来
figure(1);
hold on;
for i=1:4
plot(trainData1(i,1),trainData1(i,2),'*');
青岛滨海职业学院plot(trainData2(i,1),trainData2(i,2),'o');
plot(trainData3(i,1),trainData3(i,2),'>');
end
plot(testData(1),testData(2),'x');
世贸组织大幅下调
text(0.1,0.1,'第⼀类');
text(1.1,0.1,'第⼆类');
text(0.1,1,'第三类');
转载于blog.csdn/queyuze/article/details/70195087

本文发布于:2024-09-22 23:30:00,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/326086.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:测试   训练   矩阵   样本   集点   距离   测试点
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议