如何在 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
您可以绘制结果,例如使用 stem
或 plot
stem(1:25,correctRate);
PS:请注意,根据 MATLAB 文档,knnclassify
将在未来的版本中删除,您最好使用 fitcknn
.
我使用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
您可以绘制结果,例如使用 stem
或 plot
stem(1:25,correctRate);
PS:请注意,根据 MATLAB 文档,knnclassify
将在未来的版本中删除,您最好使用 fitcknn
.