【发布时间】:2017-06-01 12:21:50
【问题描述】:
我正在通过 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 参数?
【问题讨论】:
-
查看this。处理
rpart应该是类似的。 -
你能试试这个吗:
mod1 <- train(Species ~ ., iris, method = "rpart", control = list(cp=0), minsplit=1);identical(mod1$finalModel$splits,mod2$splits)