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

R语言bag函数自定义fit与聚合函数触发Stopping错误原因排查

R自定义bagging函数报错的原因及修复方案

问题成因

  • 缺少必要依赖包:代码中调用的train函数、rpart.control配置项、rpart建模方法分别来自caret和rpart包,你只加载了datasets和e1071,运行时找不到对应对象直接触发终止错误。
  • 自定义fit函数不符合接口规范:caret的bagControl要求传入的拟合函数必须接收三个核心参数:重采样后的特征矩阵x、标签向量y、重采样权重w,你编写的fit函数未声明w参数,bag调用时传入参数数量不匹配导致报错。
  • 你编写的getmode聚合函数本身逻辑没有问题,不需要修改。

修复后可运行代码

# 加载所有必要依赖
library(datasets)
library(caret)
library(rpart)
library(e1071)

# 补全fit函数的w参数,不需要权重的场景可直接忽略该参数
fit <- function(x, y, w, method="rpart", control = rpart.control(maxdepth=1,maxsurrogate = 0)){
  train(x,y,method,control=control)
}

getmode <- function(v) {
  uniqv <- unique(v)
  uniqv[which.max(tabulate(match(v, uniqv)))]
}

bagged <- bag(x = iris[, names(iris) != "Species"],
              y = iris$Species,
              B=4,
              bagControl = bagControl(
                fit = fit,
                predict = predict,
                aggregate = getmode)
              )

运行后可直接输出bagged查看模型结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:27:01