如何计算R中caret包10折交叉验证指标的均值与方差
解决K折交叉验证性能指标的均值与方差计算问题
步骤1:合并所有折的指标数据
先把10个fold的性能指标合并成统一的数据框,方便后续批量计算:
# Base R 实现 all_metrics <- do.call(rbind, lapply(transformed_conf_matrices, function(fold) as.data.frame(fold))) # 或用dplyr包简化操作 library(dplyr) all_metrics <- bind_rows(transformed_conf_matrices)
步骤2:计算各指标的均值与方差
针对合并后的数据集,直接对每个指标列计算均值和方差:
# Base R 实现 metric_stats <- data.frame( 均值 = sapply(all_metrics, mean), 方差 = sapply(all_metrics, var) ) # dplyr 实现 metric_stats <- all_metrics %>% summarize_all(list(均值 = mean, 方差 = var))
单指标的简化计算
如果只需要计算某个特定指标(比如准确率accuracy),可以直接提取所有fold的该指标值再计算:
# 提取所有fold的准确率 accuracy_values <- sapply(transformed_conf_matrices, function(fold) fold$accuracy) # 计算整体均值和方差 accuracy_mean <- mean(accuracy_values) accuracy_var <- var(accuracy_values)
由于你所有fold的指标值完全相同,最终方差结果会是0,均值等于该指标的固定值。
内容的提问来源于stack exchange,提问作者Tou Mou
相关产品推荐
相关产品推荐

