nnclassifier.m

来自「用于目标识别的核辨别分析程序」· M 代码 · 共 48 行

M
48
字号
% Nearest Neighbour Classifier-NNC
function [NNCrate]=NNclassifier(features,test_features,trnum,tenum,classnum)

% features       the matrix that training samples projected on feature subspace(训练样本数*特征维数,行矢量)
% test_features  the matrix that test samples projected on feature subspace(测试样本数*特征维数,行矢量) 
% trnum          the number of training samples of each class
% tenum          the number of test samples of each class
% classnum       the number of classes

% NNCrate        the output correct classification rate of each class and the total
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

result=zeros(1,size(test_features,1));
for k1=1:1:size(test_features,1)
    tt=[];
    for k2=1:1:size(features,1)
        tt=[tt norm(test_features(k1,:)-features(k2,:))];
    end
    [tt,ind]=sort(tt);
    result(k1)=ceil(ind(1)/trnum);
end

% correct classification rate of all class
rr=0;
for k1=1:1:size(result,2)
    if result(k1)==ceil(k1/tenum);
        rr=rr+1;
    end
end
rt = rr/(tenum*classnum);

% correct classification rate of each class
rrn=zeros(1,classnum);
for i=1:tenum
    for j=1:classnum
        if result(i+(j-1)*tenum)==ceil((i+(j-1)*tenum)/tenum)
            rrn(j)=rrn(j)+1;
        end
    end
end  
CCrate=rrn/tenum;

% mean correct classification rate, it is equal to the total correct classification rate
rtmean=sum(CCrate)/classnum;

% output
NNCrate=zeros(1,classnum+2);
NNCrate=[CCrate,rtmean,rt];

⌨️ 快捷键说明

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