在 matlab 中使用 perfcurve 和 SVM (fitcsvm) 的 ROC 和 AUC
Posted
技术标签:
【中文标题】在 matlab 中使用 perfcurve 和 SVM (fitcsvm) 的 ROC 和 AUC【英文标题】:ROC and AUC using perfcurve and SVM (fitcsvm) in matlab 【发布时间】:2019-08-27 06:59:04 【问题描述】:在matlab的perfcurve 函数中,使用了三个参数,
[X,Y,T,AUC] = perfcurve(labels,scores,posclass)
标签是真值标签,分类器返回分数,正类,
就我而言,我有两个类,标记为:1(pos 类)和 2(neg calss), 我正在使用SVM 分类器,它返回两列的分数,据我了解,第一列是负类,第二列是正类? (这里解释)
所以语法应该如下?
[SVMX,SVMY,T,AUC] = perfcurve(lables, SVM_scores(:,2),1);
【问题讨论】:
【参考方案1】:functionfitsvm
中的默认设置,排序为第一类为负,第二类为正。所以它翻译 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);
【讨论】:
以上是关于在 matlab 中使用 perfcurve 和 SVM (fitcsvm) 的 ROC 和 AUC的主要内容,如果未能解决你的问题,请参考以下文章
在 matlab 中解决“NaN”的建议。在 Matlab 中处理大数和小数