Matlab机器学习(分类问题)中多个ROC曲线的绘制
·
该教程适用于2017版本以后的matlab,老版本可能会有差异。
step1打开机器学习分类工具箱,导入数据选择“全部模型”进行训练;训练结果如图所示:

step2 寻找准确度较高的几个模型导出代码(点击右上角的生成函数)

step3 导出函数后将你的训练集,即已知的数据赋给trainingData,即在inputTable = trainingData代码前赋值即可:
trainingData=data1; % data1为已知的数据
inputTable = trainingData;
predictorNames = {'VarName1', 'VarName2', 'VarName3', 'VarName4'};
predictors = inputTable(:, predictorNames);
step4 将函数文件的第一行注释掉然后加入以下代码;其中ClassNames为所有的类别组成的向量,kk为指定的正类,x_roc1,y_roc1为画图所需的点。
ClassNames=unique(response);
kk=1;
posclass=ClassNames(kk);
group=response;
[x_roc1,y_roc1,~,auc1]=perfcurve(group,validationScores(:,kk),posclass);
step5 change另外一个模型,然后重复上述操作,将
[x_roc1,y_roc1,~,auc1]=perfcurve(group,validationScores(:,kk),posclass);
修改为
[x_roc2,y_roc2,~,auc2]=perfcurve(group,validationScores(:,kk),posclass);
即可。
step6 使用plot函数绘制即可:
plot(x_roc1,y_roc1,'k-','linewidth',1.5);
hold on;
plot(x_roc2,y_roc2,'r-','linewidth',1.5);
xlabel('假正类率FPR');ylabel('真正类率TPR');
legend('决策树','支持向量机');
最终的效果图:

若想同时显示AUC,则只需使用strcat函数连接字符串和变量即可,如下:
plot(x_roc1,y_roc1,'k-','linewidth',1.5);
hold on;
plot(x_roc2,y_roc2,'r-','linewidth',1.5);
xlabel('假正类率FPR');ylabel('真正类率TPR');
text1=strcat('决策树 AUC=',num2str(auc1));
text2=strcat('支持向量机 AUC=',num2str(auc2));
legend(text1,text2);

总结
利用ROC曲线选择合适的分类模型具有明显的缺点:在多分类问题中正类选择不同时模型的选择可能不一样,多适合二分类模型的选取。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)