我的任务是编写K-Nearest Neighbor算法而不使用内置的MATLAB命令knnsearch()。
我正在关注此处提供的代码: http://www.cs.tut.fi/sgn/arg/SGN-2806/exer1/knn.m
为了计算距离,我使用绝对差异。
我的训练数据如下所示:
training data = [0 1 3 4 5 0 3 4 9 1 35 13 29 1 3]
计算knn的样本数据,这个:
inputdata = [1, 4, 5, 5, 2, 1 3]
这是我用来计算绝对差异的原因:
distancesbetweendata = abs(bsxfun(@minus, inputdata(1:N)), trainingdata(N-1));
返回0 /空
这是对的吗?
在我关注的代码中,数据准备如下:
N = size(sampleData,1); % N is length of data
M = size(sampleData,2); % M is index for class
然而,它使用多行数据,而我只使用一行。
我应该如何在这个实例中准备我的数据?
编辑:
如何计算输出:
[sorted, idx] = sort(distance);
classes = sampleData(idx(1:min(N, k)));
resultClass = mode(classes); %OUTPUT