如何将Sklearn生成的ROC曲线数据导出至CSV文件?
用Sklearn生成ROC曲线并导出至CSV的便捷方法
核心实现思路
Sklearn的roc_curve函数会返回ROC曲线的核心数据:假阳性率(fpr)、真阳性率(tpr)、对应阈值(thresholds)。虽然没有像Keras CSVLogger那样的现成回调,但可以用Pandas或Python内置模块快速完成导出,操作同样简洁。
具体代码示例
1. 先生成ROC曲线基础数据
假设你已经得到模型预测概率值y_score和真实标签y_true:
from sklearn.metrics import roc_curve # 生成ROC曲线的关键数据 fpr, tpr, thresholds = roc_curve(y_true, y_score)
2. 用Pandas一键导出(最便捷)
Pandas可以直接将数组组合成结构化表格,一行代码完成导出,和CSVLogger的易用性看齐:
import pandas as pd # 封装数据为DataFrame roc_df = pd.DataFrame({ 'False Positive Rate': fpr, 'True Positive Rate': tpr, 'Threshold': thresholds }) # 导出至CSV(index=False避免写入行号) roc_df.to_csv('roc_curve_data.csv', index=False)
3. 无Pandas的纯Python方案
如果不想额外依赖Pandas,用内置csv模块也能快速实现:
import csv # 写入CSV文件 with open('roc_curve_data.csv', 'w', newline='') as csv_file: writer = csv.writer(csv_file) # 先写入表头 writer.writerow(['False Positive Rate', 'True Positive Rate', 'Threshold']) # 逐行写入数据 for fpr_val, tpr_val, thresh_val in zip(fpr, tpr, thresholds): writer.writerow([fpr_val, tpr_val, thresh_val])
额外提示
- 导出的CSV包含ROC曲线所有采样点,可直接用于二次绘图、AUC计算或其他分析。
- 如果需要在训练流程中自动记录ROC数据,可以把导出逻辑封装成函数,在每个训练轮次结束后调用,模拟Keras回调的使用方式。
内容的提问来源于stack exchange,提问作者Matthew
相关产品推荐
相关产品推荐

