Plotting ROC for fitcecoc svm classifier

조회 수: 22 (최근 30일)
Roohollah Milimonfared
Roohollah Milimonfared 2017년 10월 14일
댓글: SI LIU 2021년 4월 27일
Hi I have created a 4 level SVM classifier by fitcecoc. I need to generate ROC curve for each class. This is the code: template = templateSVM('KernelFunction', 'gaussian', 'PolynomialOrder', [], ... 'KernelScale', 1, 'BoxConstraint', 1, 'Standardize', true);
[classificationSVM,HyperparameterOptimizationResults] = fitcecoc(predictors... , response, 'Learners', template, 'Coding', 'onevsone', 'OptimizeHyperparameters',... {'BoxConstraint','KernelScale'},'HyperparameterOptimizationOptions',... struct('AcquisitionFunctionName', 'expected-improvement-plus',... 'Repartition',true,'MaxObjectiveEvaluations',10,'kfold',5),'Verbose',0,... 'FitPosterior',1);
[label,NegLoss,PBScore,Posterior] = resubPredict(classificationSVM);
Apparently, I need to use perfcurve function to get the ROC. Yet, the help instructions are for fitcsvm that does not work for fitcecoc. I am trying to use the following code for class 1: [Xsvm,Ysvm,Tsvm,AUCsvm] = perfcurve(response,Posterior(:,1),'true'); Yet, I receive the below error message: Error using perfcurve>membership (line 693) Positive class is not found in the input data.
Error in perfcurve (line 437) [W,subYnames] = membership(cls(sorted),weights(sorted),... I was wondering how I can proceed from here.
Thanks, Roohollah
  댓글 수: 1
SI LIU
SI LIU 2021년 4월 27일
Undefined function 'Posterior' for input arguments of type 'ClassificationECOC'.

댓글을 달려면 로그인하십시오.

채택된 답변

Prashant Arora
Prashant Arora 2017년 10월 18일
Hi Roohollah,
The reason you are getting this error because you defined the positive class to be "true" in the perfcurve function. This only work if the labels are logical values, i.e. can be defined as "true" or "False". If your labels are not logical values, you must define the Positive class as one of the member of the labels. You can find more information about this at the following link:
Hope this helps!
Prashant
  댓글 수: 2
Roohollah Milimonfared
Roohollah Milimonfared 2017년 10월 23일
Thanks Prashant. I was wondering if there is any standard procedure to generate ROC plots for multi-level classifiers. I am using one-vs-one coding design for the binary learners. Does that mean I have to use purcurve function for each binary learner separately? Thanks.
satinder nagra
satinder nagra 2020년 2월 11일
may be, you are correct

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 ROC - AUC에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by