如何用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
相关产品推荐
相关产品推荐

