Я пытаюсь выполнить кросс-валидацию на своих моделях с несколькими классификационными классами, но при попытке обновить свой classperf при каждой смене я получаю ошибки. Я получаю эту ошибку «Индексный вектор имеет недопустимые значения».Ошибка перекрестной проверки Matlab при вычислении производительности модели
Мой код, как показано ниже:
K = 5;
N = size(DataSet, 1);
idx = crossvalind('Kfold', N, K);
cp = classperf(trainLabel);
for i = 1:K
...
%Long codes for svmtrain & svmclassify
...
cp = classperf(cp, Group, trueTestLabel); %error on this line
end
cp.CorrectRate
где trainLabel является 120 х 1 двойными, состоящим из нот приземной истинности для всех элементов; Группа - это результаты, полученные от svmclassify в 20 x 1 double; и trueTestLabel является оценкой приземной истины для класса тестирования в 20 х 1 двойной форме, полученных с использованием следующей функции:
trueTestLabel = trainLabel(idx == i, end);
Я попытался преобразовать «Группу» и «trueTestLabel» в клетки с помощью num2cell функции как таковые :
cp = classperf(cp, num2cell(Group), num2cell(trueTestLabel));
, но вместо этого, я получил другую ошибку, говоря «Когда класс метка объекта CP являются числовой, выходом классификатора должен быть все неотрицательными целыми числами или Нэн.»