如何在knn分类器(matlab)中使用k的多值求精度
我使用knn分类器根据作者对图像进行分类(作者识别问题)。我在一个给定的数据库中工作,该数据库包含150个图像,其中100个图像用于培训,50个图像用于测试。 我使用此代码查找分类器的精度(k=1): 我想找出k[1..25]的不同值的不同精度,并将结果保存在matrix matlab中。我还想绘制结果图,以查看精度随k值变化的情况。如何在knn分类器(matlab)中使用k的多值求精度,matlab,image-processing,classification,pattern-recognition,knn,Matlab,Image Processing,Classification,Pattern Recognition,Knn,我使用knn分类器根据作者对图像进行分类(作者识别问题)。我在一个给定的数据库中工作,该数据库包含150个图像,其中100个图像用于培训,50个图像用于测试。 我使用此代码查找分类器的精度(k=1): 我想找出k[1..25]的不同值的不同精度,并将结果保存在matrix matlab中。我还想绘制结果图,以查看精度随k值变化的情况。 请帮助我更改此代码,并提前感谢knnclavide有一个可选的第四个参数k,即最近邻居的数量。您只需将knncclassify放入for循环中,并迭代k的所有值即
请帮助我更改此代码,并提前感谢
knnclavide
有一个可选的第四个参数k
,即最近邻居的数量。您只需将knncclassify
放入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文档,
knnclavide
将在未来版本中删除,您最好使用fitchnn
感谢您的回复,但我得到了错误文图结果:使用阀杆(第44行)的错误X必须与Y长度相同。knn1(第11行)阀杆(1:25,k)的错误;哦,对不起,我答错了。请参见编辑的stem
语句
stem(1:25,correctRate);