> 文章列表 > MATLAB绘制ROC曲线

MATLAB绘制ROC曲线

MATLAB绘制ROC曲线

ROC曲线(Receiver Operating Characteristic Curve)

1 简介

ROC曲线是用于评估二元分类模型(如Logistic回归)表现优劣的一种工具,其横轴表示假阳性率(false positive rate,FPR),即实际为负例但被模型预测为正例的样本占总负例样本数的比例;纵轴表示真阳性率(true positive rate,TPR),即实际为正例且被模型预测为正例的样本占总正例样本数的比例。ROC曲线的绘制方式是在不同的阈值下计算并绘制出TPR-FPR的曲线。

一般来说,ROC曲线越接近左上角,则模型性能越好。同时,ROC曲线下的面积(Area Under Curve, AUC)也可以用于衡量模型分类的性能,AUC越大说明模型分类性能越好。如果AUC为0.5,则说明模型的分类性能与随机猜测无异。

2 MATLAB代码实现

2.1 函数

在MATLAB中,可以使用perfcurve函数绘制ROC曲线。
语法:

[X,Y,T,AUC] = perfcurve(labels,scores,posclass)

具体详细解释见MATLAB中文帮助-perfcurve函

2022版MATLAB引入 rocmetrics函数,用于评估ROC性能
语法:

rocObj = rocmetrics(Labels,Scores,ClassNames)
rocObj = rocmetrics(Labels,Scores,ClassNames,Name=Value)

具体详细解释见MATLAB中文帮助-rocmetrics函

2.2 案例

下面是一个示例代码:

clc
close all
clear
%% 
pathFigure= '.\\Figures\\' ;load fisheriris
X = meas(51:end,3:4);
Y = (strcmp('versicolor',species(51:end))); 
[B,dev,stats] = glmfit(X,Y,'binomial');
scores = glmval(B,X,'logit');
[X,Y,T,AUC] = perfcurve(Y,scores,true);figure(1)
h(1) = plot(X,Y,'linewidth',1.5);
xlabel('False positive rate')
ylabel('True positive rate')
title('ROC Curve')
set(gca,'FontSize',12,'Fontname', 'Times New Roman');

成图如下:
在这里插入图片描述

参考

1.论文-J2010-Receiver Operating Characteristic Curve in Diagnostic Test Assessment
2.论文-J2017-Comparing threshold definition techniques for rainfall-induced landslides: A national assessment using radar rainfall