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

技巧|SwanLab记录ROC曲线攻略

绘制ROC(Receiver Operating Characteristic)曲线,用于评估二分类模型的性能。ROC曲线展示了在不同阈值下真正率(True Positive Rate)和假正率(False Positive Rate)的关系。

ROC曲线是评估分类模型性能的重要工具,能够直观地展示模型在不同决策阈值下的表现。

你可以使用swanlab.roc_curve来记录ROC曲线。

Demo链接:ComputeMetrics - SwanLab

在这里插入图片描述

基本用法

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
import xgboost as xgb
import swanlab# 生成示例数据
X, y = make_classification(n_samples=1000, n_features=20, n_informative=2, n_redundant=10, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 训练模型
model = xgb.XGBClassifier(use_label_encoder=False, eval_metric='logloss')
model.fit(X_train, y_train)# 获取预测概率
y_pred_proba = model.predict_proba(X_test)[:, 1]# 初始化SwanLab
swanlab.init(project="ROC-Curve-Demo", experiment_name="ROC-Curve-Example")# 记录ROC曲线
swanlab.log({"roc_curve": swanlab.roc_curve(y_test, y_pred_proba, title=True)
})swanlab.finish()

自定义标题

# 不显示标题(默认)
roc_curve = swanlab.roc_curve(y_test, y_pred_proba, title=False)
swanlab.log({"roc_curve_no_title": roc_curve})# 显示标题
roc_curve = swanlab.roc_curve(y_test, y_pred_proba, title=True)
swanlab.log({"roc_curve_with_title": roc_curve})# 自定义标题
roc_curve = swanlab.roc_curve(y_test, y_pred_proba, title="demo")
swanlab.log({"roc_curve_with_custom_title": roc_curve})

与其他指标一起使用

import swanlab# 记录多个ML指标
swanlab.log({"roc_curve": swanlab.roc_curve(y_test, y_pred_proba),"pr_curve": swanlab.pr_curve(y_test, y_pred_proba),"accuracy": accuracy_score(y_test, y_pred),"f1_score": f1_score(y_test, y_pred)
})

注意事项

  1. 数据格式: y_truey_pred_proba可以是列表或numpy数组
  2. 二分类: 此函数专用于二分类问题
  3. 概率值: y_pred_proba应该是模型对正类的预测概率,范围在0-1之间
  4. 依赖包: 需要安装scikit-learnpyecharts
  5. AUC计算: 函数会自动计算ROC曲线下的面积(AUC),但不会在标题中显示
  6. 曲线特征: ROC曲线从(0,0)开始,到(1,1)结束,对角线表示随机分类器的性能
http://www.lryc.cn/news/608076.html

相关文章:

  • LINUX82 shell脚本变量分类;系统变量;变量赋值;四则运算;shell
  • 系统性学习数据结构-第一讲-算法复杂度
  • MySQL 内置函数
  • ADB 查看 CPU 信息、查看内存信息、查看硬盘信息
  • 排序算法大全:从插入到快速排序
  • k8s使用 RBAC 鉴权
  • 论文阅读笔记:Dataset Condensation with Gradient Matching
  • [C++竞赛]数论
  • 深入 Go 底层原理(十三):interface 的内部表示与动态派发
  • [硬件电路-113]:模拟电路 - 信号处理电路 - 二极管的应用 - 精密整流电路与波形
  • sqli-labs:Less-18关卡详细解析
  • Json Jsoncpp
  • hyper-v实战系列:第一代虚拟机转第二代步骤
  • 深入理解 Docker 容器网络:为什么用 host 网络模式能解决连通性问题?
  • yolo 、Pytorch (5)IOU
  • Git、Gitee、GitHub、GitLab完整讲解:从基础到进阶
  • web:js的模块导出/导入
  • 开疆智能Profinet转Modbus网关连接信捷PLC从站配置案例
  • K8S部署ELK(二):部署Kafka消息队列
  • 深入 Go 底层原理(六):垃圾回收(GC)
  • ubuntu22.04离线一键安装gpu版docker
  • 开源列式分布式数据库clickhouse
  • pyqt5显示任务栏菜单并隐藏主窗口,环境pyqt5+vscode
  • CS课程项目设计7:基于Canvas交互友好的五子棋游戏
  • 从AI智能体出发,重构数据中台:迈向Agentic时代的数据能力体系
  • Docker容器中文PDF生成解决方案
  • Oracle 11gR2 Clusterware应知应会
  • 分布式事务----spring操作多个数据库,事务以及事务回滚还有用吗
  • Oracle 11g RAC集群部署手册(二)
  • Token系列 - 再谈稳定币