我使用 knnclassify 在Matlab中进行kNN分类,并且运行良好。现在,我需要知道到邻居的距离,似乎 knnsearch funcion给了我这个。
问题是结果不一样。我很确定 knnsearch 工作不正常,但我不知道原因。
这是我的代码:
k=1;
distance='euclidean';
rule='nearest';
%kNN classification
result = knnclassify(sample_matrix, training_matrix, label_matrix,k,distance,rule);
%showing which element is recognized and the distance to it
[recognition,distances] = knnsearch(training_matrix, sample_matrix,'k',k);
所以,结果和识别应该是一样的,然后我就能看到距离。
结果是:
4 1 1 2 4 1 1 4 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 2 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9
这是承认:
3 1 1 2 3 1 1 3 1 1 2 2 1 2 2 2 1 2 2 2 2 2 2 2 2 2 2 3 2 2 4 3 3 4 3 4 4 3 3 3 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 6 6 6 5 5 6 6 6 7 6 6 6 6 7 6 6 6 7 8 7 7 7 7 7 7 7 7 7
(他们应该是两个向量)。 期望的结果是
1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9
所以,结果几乎很好(足够好)并且认可是一场灾难。 正如你所看到的,开始比结束要好得多。 有谁可以帮帮我? 非常感谢你。