ROC и AUC с использованием perfcurve и SVM (fitcsvm) в Matlab - PullRequest
0 голосов
/ 05 апреля 2019

В функции perfcurve matlab она использует три аргумента: метки

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

являются метками достоверности, оценки возвращаются классификатором, а положительный класс

В моем случае у меня есть два класса, помеченные как: 1 (pos-класс) и 2 (neg calss), я использую SVM классификатор, он возвращает оценки двух столбцов, и изя понимаю, что первый столбец - это отрицательный класс, а второй - положительный класс?(как объяснено здесь)

enter image description here

Таким образом, синтаксис может быть следующим?

[SVMX,SVMY,T,AUC] = perfcurve(lables, SVM_scores(:,2),1);

1 Ответ

0 голосов
/ 05 апреля 2019

Настройки по умолчанию в функции fitsvm, порядок классов как первый класс как отрицательный, а второй класс как положительный.поэтому он переводит 1 отрицательно, а 2 положительно: и в соответствии с этим порядком синтаксис должен быть [SVMX,SVMY,T,AUC] = perfcurve(lables, SVM_scores(:,1),1);

или имя / переменная 'ClassNames',[2,1], может использоваться для переупорядочения классов

svmModel = fitcsvm(X,Y,'ClassNames',[2,1],'KernelFunction','RBF'); и, следовательно,

 [SVMX,SVMY,T, AUC] = perfcurve(lables,SVM_scores(:,2),1);
...