📄 knn1.m
字号:
%
function [x1]=knn1(dn1)%%读取该样本与其他样本的距离
%d11=[];
%d11=zeros(2,10);
[Y,I]=sort(dn1);
k=floor(rand*10)+1; % knn
w=[];
% weighted
for i=1:k
w(i)=k-i+1;
end
w=w/sum(w);
for i=1:k
w(i)=1;
end
r=0;
for y=1:k
r=r+w(y)*dn1(1,I(y));%%对前o个数的分类值进行连加 with weighted
end
if r>=sum(w)*0.5%%如果分类值为1的数过半
x1=1; % set the label of data b to data j
else%%如果分类值为1的数未过半
x1=0;
end
%for b=1:10
% d11(2,b)=min(dn1(2,:));%%找出最短距离并赋值给d11的第b位的第二列
% [xx,yy]=find(dn1==d11(2,b));%%找出最小值在dn1的位置
% yy=max(yy);%%如果有两个最小值,则选取位置靠后的那个
% d11(1,b)=dn1(1,yy);%%把距离最短的分类赋值给d11的第b位的第一列
% dn1(2,yy)=10000;%%把距离最短的特征的距离设成一个大数,这样第二轮搜索出来的最短距离就是实际的次短距离
%end
%if sum(d11(1,:))>=floor(k/2)
% x1=1;
%else
% x1=0;
%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 + -