如何在 knn 分类器(matlab)中使用 k 的多个值找到精度

how to find accuracy using multiple value of k in knn classifier (matlab)

我使用knn分类器根据作者对图像进行分类(作者识别问题)。我在一个给定的数据库上工作,该数据库包含 150 张图像,其中 100 张图像用于训练,50 张图像用于测试。 我使用此代码来查找分类器的准确性(k=1):

load('testdirection.mat') 
load('traindirection.mat')
load('testlabels.mat') 
load('trainlabels.mat') 
class = knnclassify(testdirection,traindirection, trainlabels);
cp = classperf(testlabels,class);
cp.CorrectRate 
fprintf('KNN Classifier Accuracy: %.2f%%\n',100*cp.CorrectRate )

我想为 k [1..25] 的不同值找到不同的精度并将结果保存在矩阵 matlab 中。我还想绘制结果以查看精度随 k 值的变化。 请帮我更改此代码,在此先感谢

knnclassify 有一个可选的第四个参数 k ,它是最近邻居的数量。您可以将 knnclassify 放在 for 循环中并遍历 k 的所有值。

load('testdirection.mat') 
load('traindirection.mat')
load('testlabels.mat') 
load('trainlabels.mat') 

for k=25:-1:1
    class = knnclassify(testdirection,traindirection, trainlabels, k);
    cp = classperf(testlabels,class);
    correctRate(k) = cp.CorrectRate;
end

您可以绘制结果,例如使用 stemplot

stem(1:25,correctRate);

PS:请注意,根据 MA​​TLAB 文档,knnclassify 将在未来的版本中删除,您最好使用 fitcknn.