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

使用cvms的cross_validate_fn与ebmc的ub函数时遇错误求助

问题分析

错误提示missing value where TRUE/FALSE needed出现在purrr::map循环中,结合你提到的单独将df_coll转为数据帧后模型可正常运行,核心原因是cross_validate_fn传递给UB_model_fn的训练数据为tibble格式,而ebmc::ub函数对tibble兼容性不佳;同时存在几处参数设置可能触发异常。

解决方案

以下是针对性修复步骤:

1. 在模型函数中强制转换为标准数据帧

修改UB_model_fn,将输入的训练数据强制转为数据帧,确保ebmc::ub能正确处理:

UB_model_fn <- function(train_data, formula, hyperparameters) {
  require(ebmc)
  # 强制转换为数据帧
  train_data <- as.data.frame(train_data)
  ebmc::ub(formula = formula, data = train_data, ir = 1, size = 100,
           rf.ntree = 1000,
           alg= "rf")
}

2. 修正折叠列的获取方式

避免硬编码列索引,用正则匹配自动获取collapse_groups生成的折叠列:

# 自动匹配所有折叠列
fold_columns <- grep("^\\.folds_collapsed", names(df_coll), value = TRUE)

# 交叉验证调用时替换fold_cols参数
cv_TD <- cross_validate_fn(
  df_coll,
  formulas = formula,
  type = "binomial",
  model_fn = UB_model_fn,
  predict_fn = UB_predict_fn,
  hyperparameters = NULL,
  fold_cols = fold_columns,  # 替换为自动匹配的列名
  positive = "1",  # 修正正类别:你的diagnosis是0/1的因子,正类为1
  metrics = "all",
  parallel = TRUE,
  verbose = TRUE
)

3. 确保预测函数返回符合要求的格式

cvms的predict_fn需要返回二分类正类的概率向量,修改UB_predict_fn提取对应概率:

UB_predict_fn <- function(test_data, model, formula, hyperparameters, train_data) {
  # 同样转换测试数据为数据帧
  test_data <- as.data.frame(test_data)
  predictions <- stats::predict(
    object = model,
    newdata = test_data,
    allow.new.levels = TRUE,
    probability = TRUE
  )
  # 提取正类(类别1)的概率
  return(predictions[, "1"])
}

4. 关闭并行调试(可选)

如果仍有问题,先关闭并行运行简化调试流程:

# 取消并行注册
stopImplicitCluster()

# 交叉验证时关闭并行
cv_TD <- cross_validate_fn(
  df_coll,
  formulas = formula,
  type = "binomial",
  model_fn = UB_model_fn,
  predict_fn = UB_predict_fn,
  hyperparameters = NULL,
  fold_cols = fold_columns,
  positive = "1",
  metrics = "all",
  parallel = FALSE,
  verbose = TRUE
)
验证步骤
  1. 先单独测试修改后的UB_model_fn:用as.data.frame(df_coll)作为训练数据,确认模型能正常训练。
  2. 再运行单折叠的交叉验证(比如只取一个fold列),逐步排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 10:52:10