【问题标题】:how to find accuracy using multiple value of k in knn classifier (matlab)如何在 knn 分类器(matlab)中使用 k 的多个值找到准确性
【发布时间】:2015-04-14 13:56:44
【问题描述】:

我使用 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 值的精度变化。 请帮助我更改此代码并提前感谢

【问题讨论】:

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


    【解决方案1】:

    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

    【讨论】:

    • 感谢您的回复,但在绘制结果时出现错误:错误使用词干(第 44 行)X 的长度必须与 Y 相同。knn1 中的错误(第 11 行)词干(1:25,k );
    • 抱歉,我的回答有误。请参阅编辑后的stem 声明
    猜你喜欢
    • 2013-03-27
    • 2012-11-14
    • 2016-06-16
    • 2012-02-14
    • 2019-08-17
    • 2016-08-26
    • 2020-08-14
    • 2016-02-26
    • 2014-05-24
    相关资源
    最近更新 更多