我正在通过插入符号:: train函数使用rpart构建决策树。我要做的是将rpart的minsplit参数设置为1,以便随后用cp修剪它。我从here获得的是参数应该在列车函数的...中传递。但这不起作用。一个可重复性最小的例子:
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列。
所以我的问题是:无论如何在插入符号中传递参数minsplit = 1在train函数中然后交叉验证cp参数?
答案 0 :(得分:1)
好的,谢谢to this post我想出了怎么做:
mod1 <- train(Species ~ ., iris, method = "rpart",
control = rpart.control(minsplit = 1, minbucket = 1))
我仍然不太确定为什么必须通过control = rpart.control()传递参数。仅将参数minsplit = 1,minbucket = 1直接传递给火车功能根本不起作用。
答案 1 :(得分:0)
我认为'control = rpart.control()'对于在{caret}火车函数中传递参数'minsplit'和'minbucket'是必要的,因为这将是rpart函数本身的正确方法,参数是通过{caret}训练函数的“ ...”发送的。 最好,G