function [k] = findBestK (trainMat) % trainMat = n*m+1: n objects of dimension m; last column is class % returns the value of k that returns the best value of kNN numObjects = size(trainMat,1); numFeatures = size(trainMat,2)-1; % trying k= 1 to numObjects-1 numCorrect = zeros(1, numObjects-1); for i=1:numObjects-1 for j=1:numObjects % k = i, try on each object j remTrainMat = zeros(numObjects-1,numFeatures+1); if(j==1) remTrainMat = trainMat(j+1:numObjects,:); elseif(j==numObjects) remTrainMat = trainMat(1:j-1,:); else remTrainMat(1:j-1,:) = trainMat(1:j-1,:); remTrainMat(j:numObjects-1,:) = trainMat(j+1:numObjects,:); end result = simplekNN(trainMat(j,1:numFeatures), remTrainMat, i); if(result == trainMat(j,numFeatures+1)) numCorrect(1,i) = numCorrect(1,i) + 1; end end end [who where] = max(numCorrect); numCorrect k = where;