R Caret и GBM не могут найти вход дерева - PullRequest
4 голосов
/ 04 января 2012

Я пытаюсь обучить gbm с использованием пакета caret в R. Сначала я получил следующую ошибку и подумал, что это из-за отсутствия ввода, поэтому я создал gbmGrid, но все еще получаю то же сообщение об ошибке.

sub4Collect1 <- data.frame(testing$row_id)
> 
> cl <- makeCluster(10, type = "SOCK")
> registerDoSNOW(cl)
> ptm <- proc.time()
> 
> for(i in 2:7){
+ trainClass <- postPrior1[,i]
+ testClass <- postTest1[,i]
+ gbmGrid <- expand.grid(.interaction.depth = (1:5) * 2, .n.trees = (1:5)*50, .shrinkage = .1)
+ bootControl <- trainControl(number = 1)
+ set.seed(2)
+ gbmFit <- train(prePrior1[,-c(2,60,61,161)], trainClass, method = "gbm", tuneLength = 5,
+ trControl = bootControl
+ ##, scaled = FALSE
+ , tuneGrid = gbmGrid 
+ )
+ pred1 <- predict(gbmFit$finalModel, newdata = preTest1[,-c(2,60,61,161)])
+ sub4Collect1 <- cbind(sub4Collect1, pred1)
+ print(i)
+ flush.console()
+ }
Iter   TrainDeviance   ValidDeviance   StepSize   Improve
     1        0.0000            -nan     0.1000    0.0000
     2        0.0000            -nan     0.1000    0.0000
     3        0.0000            -nan     0.1000    0.0000
     4        0.0000            -nan     0.1000    0.0000
     5        0.0000            -nan     0.1000    0.0000
     6        0.0000            -nan     0.1000    0.0000
     7        0.0000            -nan     0.1000    0.0000
     8        0.0000            -nan     0.1000    0.0000
     9        0.0000            -nan     0.1000    0.0000
    10        0.0000            -nan     0.1000    0.0000
    50        0.0000            -nan     0.1000    0.0000

Error in n.trees[n.trees > object$n.trees] <- object$n.trees : 
  argument "n.trees" is missing, with no default
> stopCluster(cl)
> timee4 <- proc.time() - ptm
> timee4 
   user  system elapsed 
  3.563   0.306  14.472 

Есть предложения?

Ответы [ 3 ]

5 голосов
/ 18 марта 2012

Для правильного кода для функции предиката () необходимо вручную указать параметр .n.trees из объекта gbmFit $ finalModel:

    pred1 <- predict(gbmFit$finalModel, newdata = preTest1[,-c(2,60,61,161)], 
              n.trees=gbmFit1$bestTune$.n.trees)
1 голос
/ 16 июля 2015

Если это не работает:

pred1 <- predict(gbmFit$finalModel, newdata = preTest1[,-c(2,60,61,161)], 
          n.trees=gbmFit1$bestTune$.n.trees)

Вы можете использовать это:

pred1 <- predict(gbmFit, newdata = preTest1[,-c(2,60,61,161)], 
          n.trees=gbmFit1$n.trees)
0 голосов
/ 05 января 2012

Не думаю, что вам нужно передавать оба параметра: tuneLength и tuneGrid.Попробуйте только один или другой и посмотрите, сохраняется ли проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...