⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 knn1.m

📁 求解离散问题的pso aco 算法
💻 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 + -