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

如何用R语言Metrics包批量计算多列预测值的AUC指标

批量计算多列预测值的AUC指标(R语言Metrics包)

我来帮你解决这个批量计算AUC的问题!首先得搞清楚为什么直接传入多列预测值会报错:

Metrics::auc函数的第二个参数只接受单个数值向量,当你传入Table[,2:4](一个3列的数据框)时,R会自动把它展开成一个长向量,然后和真实值向量循环配对计算,这就导致了错误的结果和警告信息。

下面提供两种简单有效的解决方案:

方法1:基础R的apply函数

利用apply按列遍历所有预测列,对每一列单独计算AUC:

require(Metrics)

# 按列处理预测值,固定传入真实值列
auc_results <- apply(Table[, 2:4], MARGIN = 2, function(pred_col) {
  auc(Table[, 1], pred_col)
})

# 查看结果
auc_results

运行后会得到一个命名向量,每个元素对应一个预测列的AUC:

prediction_1 prediction_2 prediction_3 
          1.0        0.8333333        1.0000000 

方法2:tidyverse风格的purrr::map_dbl

如果你习惯用tidyverse工具链,purrr的map_dbl会让代码更简洁直观:

library(purrr)
library(Metrics)

# 遍历每个预测列,计算AUC并返回数值向量
auc_results <- map_dbl(Table[, 2:4], ~auc(Table[, 1], .x))

auc_results

结果和方法1完全一致,这种写法更适合后续的tidy数据处理流程。

可选:把结果整理成数据框

如果需要结构化的输出格式,可以把结果转换成数据框:

auc_df <- data.frame(
  Model = names(auc_results),
  AUC = round(auc_results, 4), # 保留4位小数
  row.names = NULL
)

print(auc_df)

输出结果:

Model    AUC
1 prediction_1 1.0000
2 prediction_2 0.8333
3 prediction_3 1.0000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:56:25