📄 knn.m
字号:
function [ypred,tabkppv,distance]=knn(xapp,yapp,valY,X,k)%% knn implementation%% USE : [ypred,tabkppv,distance]=knn(xapp,yapp,valY,X,k)%% xapp, yapp : learning data% valY : all the Y value possible% 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<4 error('too few argumemnts');elseif nargin<5 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);% distance de X a xapp :mat1 = repmat(xapp, nptX,1);%mat21 = reshape(X',1,nptX*ndim)mat22 = repmat(X,1,nptxapp)';mat2 = reshape(mat22 ,ndim, nptxapp*nptX)';distance = mat1 - mat2 ;distance = sum(distance.^2,2);distance = reshape(distance,nptxapp,nptX);keyboard[val kppv] = sort(distance,1);% bilan sur les k premieres ligneskppv = reshape(kppv(1:k,:),k*nptX,1);Ykppv = yapp(kppv,1);Ykppv = reshape(Ykppv,k,nptX);% trouver le plus de reponses identique par colonnetabkppv = Ykppv;vote = [];for i=1:nptX 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 + -