我正在使用caret::train函数通过rpart构建决策树。我的目标是将rpart的minsplit参数设置为1,以便稍后使用cp进行修剪。从这里得到的信息是应该将参数传递给train函数中的...参数。但是这样做并不起作用。以下是一个最小可重现示例:
我理解的是mod1$finalModel和mod2是非常不同的。我希望mod1$finalModel像mod2一样(即完全过拟合)。但是我不能在tuneGrid上传递参数,因为它只接受cp列。所以我的问题是:在caret中是否有办法通过train函数传递minsplit=1参数,然后在cp参数上进行交叉验证?
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列。所以我的问题是:在caret中是否有办法通过train函数传递minsplit=1参数,然后在cp参数上进行交叉验证?
mod1 <- train(Species ~ ., iris, method = "rpart", control = list(cp=0), minsplit=1);identical(mod1$finalModel$splits,mod2$splits)
- Silence Dogood