我使用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的值来看准确度的可变性。 请帮助我更改此代码,并提前致谢
答案 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
您可以绘制结果,例如使用stem
或plot
stem(1:25,correctRate);
PS:请注意,根据MATLAB文档,将来的版本中将删除knnclassify
,您最好使用fitcknn
。