2017-01-17 3 views
0

Ich baue einen Entscheidungsbaum mit Rpart über die Caret :: Train-Funktion. Was ich versuche, ist, den Parameter minsplit von rpart gleich 1 zu setzen, um ihn anschließend mit dem cp zu löschen. Was ich von here bekomme ist, dass die Parameter im ... der Zugfunktion übergeben werden sollen. Aber das funktioniert nicht. Ein minimales reproduzierbares Beispiel:Caret :: Zug Pass zusätzliche Parameter rpart

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

Was ich bekomme ist, dass mod1 $ finalModel und mod2 ziemlich unterschiedlich sind. Ich möchte, dass mod1 $ finalModel wie mod2 (d. H. Total übersteuert) war. Ich kann den Parameter nicht an tuneGrid übergeben, da er nur eine cp-Spalte akzeptiert.

Also meine Frage ist: Gibt es sowieso in Caret, das Argument minsplit = 1 in der Zugfunktion übergeben und dann über den cp-Parameter validieren?

+0

überprüfen [this] (http://stackoverflow.com/questions/38625493/tuning-two-parameters-for-random-forest-in-caret-package/38633939#38633939). Die Übergabe von 'rpart' sollte ähnlich sein. –

+0

Könnten Sie das versuchen: 'mod1 <- train (Art ~., Iris, methode =" rpart ", control = list (cp = 0), minsplit = 1); identisch (mod1 $ finalModel $ splits, mod2 $ splits) ' – OdeToMyFiddle

Antwort

0

Ok, danke to this post ich herausgefunden, wie es geht:

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

Ich bin noch nicht ganz sicher, warum das Argument über Steuer = rpart.control() übergeben werden muss. Nur die Argumente minsplit = 1 übergeben, minbucket = 1 direkt an die Zugfunktion funktioniert einfach nicht.