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

时间:2015-02-13 13:45:54

标签: matlab image-processing classification pattern-recognition knn

我使用knn分类器根据作者(作家识别问题)对图像进行分类。我在一个给定的数据库上工作,该数据库包含150张图像,其中包含100张用于训练的图像 我使用此代码来查找分类器的准确性(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的值来看准确度的可变性。  请帮助我更改此代码,并提前致谢

1 个答案:

答案 0 :(得分:0)

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:请注意,根据MATLAB文档,将来的版本中将删除knnclassify,您最好使用fitcknn