caret::train 传递额外参数 rpart

caret::train pass extra parameters rpart

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

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

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

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

好的,谢谢我知道怎么做了:

mod1 <- train(Species ~ ., iris, method = "rpart", 
             control = rpart.control(minsplit = 1, minbucket = 1))

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

我想 'control = rpart.control()' 是在 {caret} train-function 中传递参数 'minsplit' 和 'minbucket' 所必需的,因为这是rpart-function 本身,参数通过 {caret} train-function 的 '...' 发送到它。 最好的,G