在 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进行ROC分析

在 matlab 中使用库(gcc)和编译 mex 时出错

在 matlab 中解决“NaN”的建议。在 Matlab 中处理大数和小数

在 matlab 中使用 memmapfile 读取和表示 mp3 文件

在 MATLAB 中使用 i 和 j 作为变量

强化学习(使用 TensorFlow 和 Matlab 环境)