Matlab ROC曲线与libsvm
给定用Matlab ROC曲线与libsvm,matlab,classification,svm,libsvm,roc,Matlab,Classification,Svm,Libsvm,Roc,给定用plotroc.m绘制的ROC曲线(请参阅): 理论问题:如何选择要使用的最佳阈值 编程问题:如何引导libsvm分类器使用选定的(最佳)阈值 ROC曲线是通过绘制y轴上的真阳性分数与x轴上的假阳性分数生成的曲线。所以,ROC曲线上任意点(x,y)的坐标表示特定阈值下的FPR和TPR值。 如图所示,我们找到ROC曲线上的点(x,y),该点对应于该点到绘图左上角(即(0,1))的最小距离。对应于该点的阈值是所需的阈值。很抱歉,我不允许放置任何图像,因此无法用图进行解释。但是,有关此操作的更多
plotroc.m
绘制的ROC曲线(请参阅):
libsvm
分类器使用选定的(最佳)阈值ROC曲线是通过绘制y轴上的真阳性分数与x轴上的假阳性分数生成的曲线。所以,ROC曲线上任意点(x,y)的坐标表示特定阈值下的FPR和TPR值。 如图所示,我们找到ROC曲线上的点(x,y),该点对应于该点到绘图左上角(即(0,1))的最小距离。对应于该点的阈值是所需的阈值。很抱歉,我不允许放置任何图像,因此无法用图进行解释。但是,有关此操作的更多详细信息,请单击 其次,在libsvm中,svmpredict函数返回属于特定类的数据样本的概率。所以,如果概率(正类)大于阈值(从ROC图获得),那么我们可以将样本分类为正类。以下几行可能对您有用:
[pred_labels,~,p] = svmpredict(target_labels,feature_test,svmStruct,'-b 1');
%其中,svmStruct是svmtrain函数返回的结构
现在,如果这个变量'op'大于阈值,那么我们可以将相应的测试样本分类为阳性类。这可以按如下方式完成
op_标签=op>th;%其中“th”是从ROC获得的阈值有人已经费心为计算AUC(ROC)的libsvm实现扩展。可以在这里找到:
op = p(:,svmStruct.Label==1); % This gives probability for positive
% class (i.e whose label is 1 )