R插入符和gbm找不到ntrees输入
我正在尝试使用 R 中的 caret
包来训练 gbm
。我最初收到以下错误,并认为这是由于缺少输入,所以我创建了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
有什么建议吗?
I'm trying to train a gbm
using the caret
package in R. I initially got the following error and thought it was due to lack of an input, so I created the gbmGrid
but am still getting the same error message.
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
Any suggestions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Predict() 函数的正确代码需要从 gbmFit$finalModel 对象手动输入 .n.trees 参数,如下所示:
The proper code for the predict() function requires feeding in the .n.trees parameter manually from the gbmFit$finalModel object as such:
如果这不起作用:
您可以使用这个:
If this is not working :
you can use this:
我认为您不需要同时传递
tuneLength
和tuneGrid
参数。仅尝试其中一种,看看问题是否仍然存在。I don;t think you need to pass both the
tuneLength
andtuneGrid
paramters. Try just one or the other and see if the problem persists.