caret::train 传递额外的参数 rpart

Pab*_*blo 2 r cp rpart r-caret

我正在通过 caret::train 函数使用 rpart 构建决策树。我想要做的是将 rpart 的 minsplit 参数设置为等于 1,以便之后用 cp 修剪它。我从这里得到的是参数应该在 train 函数的 ... 中传递。但这不起作用。一个最小的可重现示例:

mod1 <- train(Species ~ ., iris, method = "rpart", tuneGrid = expand.grid(cp = 0), minsplit=1)
mod2 <- rpart(Species ~ ., iris, cp=0, minsplit=1)
Run Code Online (Sandbox Code Playgroud)

我得到的是 mod1$finalModel 和 mod2 完全不同。我希望 mod1$finalModel 就像 mod2(即完全过拟合)。我不能在 tuneGrid 上传递参数,因为它只接受一个 cp 列。

所以我的问题是:是否有插入符号在 train 函数中传递参数 minsplit=1 然后交叉验证 cp 参数?

Pab*_*blo 5

好的,感谢这篇文章,我想出了如何做到这一点:

mod1 <- train(Species ~ ., iris, method = "rpart", 
             control = rpart.control(minsplit = 1, minbucket = 1))
Run Code Online (Sandbox Code Playgroud)

我仍然不太确定为什么必须通过 control = rpart.control() 传递参数。仅将参数 minsplit = 1, minbucket = 1 直接传递给 train 函数根本行不通。