【问题标题】:R caret / gbm code won't predict : dim(X) must have a positive lengthR caret / gbm 代码无法预测:dim(X) 必须具有正长度
【发布时间】:2013-08-04 05:15:10
【问题描述】:

我正在尝试使用插入符号来查找 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 2.1 和 caret 5.16.24

【问题讨论】:

    标签: r r-caret gbm


    【解决方案1】:

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

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

    最大

    【讨论】:

    • @topepp:非常感谢!
    【解决方案2】:

    如果您尝试运行插入符号模型并错误地只包含一个仅包含一个因素的因变量,您也可能会收到此错误。

    【讨论】:

    • 或者如果您错误地包含了一个只有 1 个级别的因子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多