R插入符号/gbm代码赢得';t predict:dim(X)必须具有正长度

R插入符号/gbm代码赢得';t predict:dim(X)必须具有正长度,r,r-caret,gbm,R,R Caret,Gbm,我试图使用插入符号为gbm模型找到最佳参数。此代码与我在其他数据集上使用的代码相同,无法找出错误 它似乎运行模型,但无法创建预测 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 posit

我试图使用插入符号为gbm模型找到最佳参数。此代码与我在其他数据集上使用的代码相同,无法找出错误

它似乎运行模型,但无法创建预测

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)

myControl那是一个bug。我今天要提交一个新版本的插入符号,但我会在发送之前进行这些更改

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


那是一个错误。我今天要提交一个新版本的插入符号,但我会在发送之前进行这些更改

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


Max

如果您尝试运行插入符号模型,但错误地仅包含一个因子的因变量,则也可能会出现此错误。

如果您尝试运行插入符号模型,但错误地仅包含一个因子的因变量,则也可能会出现此错误。

@topepp:非常感谢@托佩普:非常感谢!或者如果您错误地包含了一个只有一个级别的因子,或者如果您错误地包含了一个只有一个级别的因子。