牙周病和牙周炎的区别:利用perfcurve函数画ROC和DET等评价曲线 - Matlab 人工智能 模式识别...

来源:百度文库 编辑:中财网 时间:2024/05/05 12:48:25

利用perfcurve函数画ROC和DET等评价曲线

论坛里已经有很多画分类评价曲线的方法了,不过我发现直接用perfcurve函数画比较简单方便,还可以扩展到画更多其他的分类曲线
具体使用方法可以参考perfcurve帮助复制内容到剪贴板
代码:
load heart_scale.mat

model = svmtrain(heart_scale_label, heart_scale_inst, '-c 1 -g 0.07');
[predict_label, accuracy, dec_values] = svmpredict(heart_scale_label, heart_scale_inst,model);

[X,Y] =perfcurve(heart_scale_label,dec_values,'1');
%[X,Y] = perfcurve(labels,scores,posclass,'param1', val1,'param2',val2,...)
%labels:目标标签 scores:决策值 posclass:正类标签
%'param'和val可以定义X和Y的输出值,具体可以看函数帮助,默认是定义X轴为FPR,Y轴为TPR

plot(X,Y),xlabel('FPR'),ylabel('TPR');%输出ROC曲线

[X,Y] =perfcurve(heart_scale_label,dec_values,'1','xCrit','FPR','yCrit','FNR');
%重新定义输出值,'xCrit','FPR'表示定义X输出为FPR=FP/(TN+FP),这里其实就是默认值
%'yCrit','FNR'表示定义y输出为FNR=FN/(TP+FN)

figure,plot(X,Y),xlabel('fall'),ylabel('miss');%输出DET曲线