2017-01-17 15 views
0

Я строю дерево решений с rpart через функцию каретки :: train. То, что я пытаюсь сделать, - установить параметр minsplit rpart равным 1, чтобы впоследствии обрезать его с помощью cp. То, что я получаю от here, состоит в том, что параметры должны быть переданы в ... функции поезда. Но это не работает. Минимальный воспроизводимый пример:caret :: train pass extra parameters rpart

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 в функции поезда, а затем перекрестите проверку по параметру cp?

+0

проверить [это] (http://stackoverflow.com/questions/38625493/tuning-two-parameters-for-random-forest-in-caret-package/38633939#38633939). Передача 'rpart' должна быть аналогичной. –

+0

Не могли бы вы попробовать: 'mod1 <- train (Species ~., Iris, method =" rpart ", control = list (cp = 0), minsplit = 1), идентичные (mod1 $ finalModel $ split, mod2 $ split) ' – OdeToMyFiddle

ответ

0

Ок, спасибо to this post я понял, как это сделать:

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

Я все еще не совсем уверен, почему аргумент должен быть передан через управляющий = rpart.control(). Передавая только аргументы minsplit = 1, minbucket = 1 непосредственно к функции поезда просто не работает.