📄 knn.m
字号:
function [x1]=knn(dn1)%%读取该样本与其他样本的距离
d11=zeros(2,10);
for b=1:10
d11(2,b)=min(dn1(2,:));%%找出最短距离并赋值给d11的第b位的第二列
[xx,yy]=find(dn1==d11(2,b));%%找出最小值在dn1的位置
yy=max(yy);%%如果有两个最小值,则选取位置靠后的那个
d10(1,b)=dn1(1,yy);%%把距离最短的分类赋值给d11的第b位的第一列
dn1(2,yy)=10000;%%把距离最短的特征的距离设成一个大数,这样第二轮搜索出来的最短距离就是实际的次短距离
end
r=0;
o=floor(round(rand*10+0.5));%%随机一个1—10的数
for y=1:o
r=r+d11(1,y);%%对前o个数的分类值进行连加
end
if r>=floor(o/2)%%如果分类值为1的数过半
x1=1; % set the label of data b to data j
else%%如果分类值为1的数未过半
x1=0;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -