0

Я использую классификатор knn для классификации изображений в соответствии с их авторами (проблема распознавания писателя). Я работал над данной базой данных, которая содержит 150 изображений с 100 изображениями для обучения и 50 изображений для тестирования. Я использую этот код, чтобы найти точность классификатора (к = 1):Как найти точность с использованием нескольких значений k в классификаторе knn (matlab)

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) 

Я хочу найти разную точность для различного значения для к [1..25] и сохранить результат в матрице MATLAB. Я хочу также построить результат, чтобы увидеть изменчивость точности в зависимости от значения k. Пожалуйста, помогите мне сменить этот код и заблаговременно

ответ

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.

+0

спасибо за ваш ответ, но я получил ошибку вэнь сюжет результат: Ошибка при помощи штока (строка 44) X должна быть такой же длины, как и Y. Ошибка в knn1 (строка 11) шток (1: 25, к) ; – sahar

+0

О, извините, я ошибся в своем андерве. См. Отредактированное утверждение 'stem' – hbaderts

+0

, спасибо, что он работает сейчас – sahar

Смежные вопросы