2013-08-02 92 views
1

我正在尝试使用脱字号来查找gbm模型的最佳参数。此代码与我在其他数据集上使用的代码完全相同,并且无法找出错误。R caret/gbm代码无法预测:dim(X)必须具有正值

它似乎运行模型,但不能创建预测。

predictions failed for Fold2: interaction.depth=4, shrinkage=0.005, n.trees=200 Error in apply(tmp, 2, function(x, nm = modelFit$obsLevels) ifelse(x >= : 
    dim(X) must have a positive length 

下面是完整的代码:

library(caret) 
library(gbm) 

myControl <- trainControl(method='cv', number=2, summaryFunction=twoClassSummary, 
          classProbs=TRUE, savePredictions=TRUE, verboseIter=TRUE) 


df1 <- data.frame(Y = round(runif(1000), 0), x1=runif(1000), x2=runif(1000)) 

X <- df1[,c('x1','x2')] 
Y <- factor(paste('X', df1[,'Y'])) 


gbm_model <- train(X, Y, method='gbm', metric='ROC', trControl=myControl 
        ,distribution='bernoulli', tuneGrid=expand.grid(.n.trees=seq(100, 200, by=100) 
        ,.interaction.depth=seq(2, 4, by=2), .shrinkage=c(.005))) 

有什么建议?

编辑:我使用gbm 2.1caret 5.16.24

回答

3

这是一个错误。我有插入符号的新版本今天提交,但我会做出这些改变之前,在发送。

有你的代码和输出之间有点脱节。我得到一个额外的警告:“至少有一个类的级别不是有效的R变量名称;如果因为变量名称将被转换为:X.0,X.1而生成类概率,则可能会导致错误。在paste命令中添加sep = ""并且它消失。

最大

+0

@topepp:非常感谢! – screechOwl

相关问题