📄 kernelknn.m
字号:
function [ypred,tabkppv,distance]=kernelknn(xapp,yapp,valY,kernel,kerneloption,X,k)%% knn implementation%% USE : [ypred,tabkppv,distance]=kernelknn(xapp,yapp,valY,kernel,kerneloption,X,k)%% xapp, yapp : learning data% valY : all the Y value possible% kernel : the inner product in the feature space% kerneloption : option of the kernel (gaussian bandwidth or degree of polynomial kernel)% X : data to be classified% k : number of nearest neighbours%% ypred : class of X% tabkppv : [nbpts x nbpts] index of nearest neighbours% distance : [nbpts x nbpts] distance%% Vincent Guigue 08/01/03% check narginif nargin<7 error('too few argumemnts');elseif nargin<7 k=3;else if mod(k,2)==0 error('k must be odd'); endendif size(xapp,2)~=size(X,2) error('dimension incompatibility');endndim = size(xapp,2);nptxapp = size(xapp,1);nptX = size(X,1);kxx=diag(svmkernel(xapp,kernel,kerneloption,xapp));kyy=diag(svmkernel(X,kernel,kerneloption,X));kxy=svmkernel(xapp,kernel,kerneloption,X);distance=repmat(kxx,1,nptX)+ repmat(kyy',nptxapp,1)-2*kxy;[val kppv] = sort(distance,1);% bilan sur les k premieres ligneskppv = reshape(kppv(1:k,:),k*nbtest,1);Ykppv = yapp(kppv,1);Ykppv = reshape(Ykppv,k,nbtest);% trouver le plus de reponses identique par colonnetabkppv = Ykppv;vote = [];for i=1:nbtest for j=1:length(valY) vote(j,i)=size(find(Ykppv(:,i)==valY(j)),1); endend[val ind]=max(vote,[],1);ypred = valY(ind);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -