当前位置: 首页 > news >正文

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

http://www.lryc.cn/news/39487.html

相关文章:

  • ChatGPT前传
  • 我的十年编程路 2020年篇
  • 力扣-SQL【入门】
  • Vue中组件到底是什么
  • 不同时间间隔数据对统计结果的影响
  • hudi系列-数据写入方式及使用场景
  • C # FileStream文件流
  • Go语言中的保留字和运算符详解
  • Linux编译之(1)C语言基础
  • CPU平均负载高问题定位分析
  • Python蓝桥杯训练:基本数据结构 [二叉树] 中
  • 读取 DTC 信息服务 (0x19) – UDS 协议
  • Hive 分区表新增字段 cascade
  • 【Java版oj】day08两种排序方法、最小公倍数
  • FinOps,从概念到落地 | UGeek大咖说第一期直播回顾(上)
  • k8s java程序实现kubernetes Controller Operator 使用CRD 学习总结
  • Unity笔记:修改代码执行的默认打开方式
  • Linux IPC:匿名管道 与 命名管道
  • 阿里研发工程师JAVA暑期实习一面
  • 第十四届蓝桥杯三月真题刷题训练——第 11 天
  • 机器学习入门——线性回归
  • Microsoft Word 远程代码执行漏洞(CVE-2023-21716)
  • Android kotlin 系列讲解(数据篇)SharedPreferences存储及测试
  • 一文了解Web Worker
  • 接口文档包含哪些内容?怎么才能写好接口文档?十年测试老司机来告诉你
  • java面试八股文之------Java并发夺命23问
  • CANoe中使用CAPL刷写流程详解(Trace图解)(CAN总线)
  • 【MySQL】002 -- 日志系统:一条SQL更新语句是如何执行的
  • C++---背包模型---数字组合(每日一道算法2023.3.14)
  • 并查集(不相交集)详解