Построение кривой ROC при перекрестной проверке с использованием Matlab perfcurve - PullRequest
0 голосов
/ 24 марта 2019

У меня есть следующий код для двоичной классификации с использованием SVM и 10 перекрестной проверки,

Обновление: найдено решение, см. Примечания ниже

k=10;
cp = classperf(lables); 
cvFolds = crossvalind('Kfold', lables, k);   
 for i = 1:k                                 
  testIdx = (cvFolds == i);                %# get indices of test instances
  trainIdx = ~testIdx;                     %# get indices training instances


   svmModel = fitcsvm(data_features(trainIdx,:), lables(trainIdx), 
   'Standardize',true,'KernelFunction','RBF','KernelScale','auto');

  [label,score] = predict(svmModel, data_features(testIdx,:));
  cp = classperf(cp, pred, testIdx);
  cumulative_score= [cumulative_score; score];
  label1 = [label1; label];

end
acc= cp.CorrectRate;
conf= cp.CountingMatrix;

Я хочу построить кривую ROC, используя функцию perfcurve в Matlab, однако входной «счет» меняется каждый раз и не может использоваться вне цикла k-сгиба.

[X,Y] = perfcurve(labels,scores,posclass)

Любое предложение о том, как построить РПЦ в таком случае? ПРИМЕЧАНИЕ: [решено] выше, добавив cumulative_score= [cumulative_score; score]; внутри цикла, и используйте его как вход для perfcurve

1 Ответ

0 голосов
/ 25 марта 2019

Добавив cumulative_score= [cumulative_score; score]; внутри цикла, и используйте его как вход для perfcurve

...