You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Weka命令行输出的多分类预测结果绘制ROC曲线

基于Weka预测结果绘制ROC曲线的实现方案

ROC曲线的绘制只需要两列核心数据:真实类别标签(Actual列) 和 正类的预测概率(prediction列),不需要预测分类结果和误差列。

Python实现步骤

步骤1:导入依赖库

import pandas as pd
from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt

步骤2:读取并预处理数据

# 读取Weka输出的结果文件,csv格式为例,arff格式可使用scipy.io.arff读取
df = pd.read_csv("weka_prediction_result.csv")

# 真实标签编码为0/1二值格式,替换为你自己的类别映射规则
df['Actual'] = df['Actual'].map({'yes': 1, 'no': 0})

# 提取真实标签和正类预测概率
y_true = df['Actual'].values
y_score = df['prediction'].values

步骤3:计算ROC曲线参数和AUC值

# 计算假阳性率fpr、真阳性率tpr、分类阈值
fpr, tpr, thresholds = roc_curve(y_true, y_score)
# 计算AUC值
roc_auc = auc(fpr, tpr)

步骤4:绘制ROC曲线

plt.figure(figsize=(8, 6))
# 绘制ROC曲线
plt.plot(fpr, tpr, color='darkorange', lw=2, label=f'ROC curve (AUC = {roc_auc:.2f})')
# 绘制随机猜测参考线
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
# 格式设置
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic Curve')
plt.legend(loc="lower right")
plt.show()

R语言可选实现方案

# 加载依赖包
library(pROC)
library(ggplot2)

# 读取数据
df <- read.csv("weka_prediction_result.csv")
# 转换真实标签为因子类型
df$Actual <- as.factor(df$Actual)

# 计算ROC对象和AUC值
roc_obj <- roc(df$Actual, df$prediction)
auc_value <- auc(roc_obj)

# 绘制ROC曲线
ggroc(roc_obj, color = "darkorange", linewidth = 1) +
  geom_abline(slope = 1, intercept = 0, linetype = "dashed", color = "navy") +
  labs(title = "ROC Curve", x = "False Positive Rate", y = "True Positive Rate") +
  annotate("text", x = 0.75, y = 0.25, label = paste0("AUC = ", round(auc_value, 2))) +
  theme_minimal()

注意事项

  • 如果是多分类任务,需要对每个类别分别做one-vs-rest处理后绘制对应ROC曲线
  • 要确保prediction列对应的是正样本的预测概率,不要拿负样本概率计算,否则AUC值会小于0.5,出现这种情况可以用1 - y_score转换后再计算
  • 如果Weka输出的结果是ARFF格式,Python可以用scipy.io.arff.loadarff()读取,R可以用foreign::read.arff()读取

内容的提问来源于stack exchange,提问作者wasif khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 10:57:05