У меня есть следующий код для двоичной классификации с использованием 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