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

📄 knn.m

📁 knn文本分类算法
💻 M
字号:
%KNN classifiers, 
%training is training set, testing is test set, 
%D is the  distance, D=1 is mandistance; D=2 is 欧氏距离 D=3是 infinite norm
% K is the number of selected neighbors
function label=KNN(training,testing,D,K)
[row, column]=size(training);
[row1, column1]=size(testing);
%计算测试集与训练集的距离
distance=[];
if D==1
   for i=1:row1
        for j=1:row
            temp=[training(j,[1:(column-1)]);testing(i,:)];
            d=mandist(temp);
            distance(i,j)=d(1,2);
        end
    end
end
if D==2   
   for i=1:row1
        for j=1:row
            temp=[training(j,[1:(column-1)]);testing(i,:)]';
            d=dist(temp);
            distance(i,j)=d(1,2);
        end
    end
end
if D==3
    for i=1:row1
        for j=1:row
            temp=[training(j,[1:(column-1)]);testing(i,:)];
            d=max(abs(temp(1,:)-temp(2,:)));
            distance(i,j)=d;
        end
    end
end
% 寻找k个近邻
label=[];
for i=1:row1
    [a,b]=sort(distance(i,:));
    neighbors=b(1:K)';
    neighbors_D=training(neighbors,column);
    [x,y]=sort(neighbors_D);
    temp=find(diff(x)~=0);        
    nei_d=[x(1);x(temp+1)];
    Num_D=[];
    for j=1:length(nei_d)
        num=length(find(neighbors_D==nei_d(j)));
        Num_D=[Num_D,num];
    end
    [a,b]=max(Num_D);
    label(i)=nei_d(b);
end
        

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -