これはユークリッド距離KNNのために、あなたはあなたのニーズによって距離の定義を変更することができますされています
% generate data
dim = 2;
K = 3;
ntest = 10;
ntrain = 100;
nlabels = 3;
traindata = rand(ntrain,dim);
trainlabel = randi(nlabels,[ntrain 1]);
testdata = rand(ntest,dim);
testlabel = zeros(ntest,1);
for ii = 1:ntest
% compute euclidean distances
dists = sum(bsxfun(@minus,traindata,testdata(ii,:)).^2,2);
% take the closest neighbors' label
[~,idxs] = sort(dists);
labels = trainlabel(idxs(1:K));
% majority vote
testlabel(ii) = mode(labels);
end
% plotting
scatter(traindata(:,1),traindata(:,2),50,trainlabel);
hold on
scatter(testdata(:,1),testdata(:,2),50,testlabel,'filled');
hold off
colormap('jet')
legend('train data','test data')
を