簡體   English   中英

R插入符/ gbm代碼無法預測:dim(X)必須具有正長度

[英]R caret / gbm code won't predict : dim(X) must have a positive length

我正在嘗試使用插入符號來找到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.1caret 5.16.24

那是一個錯誤。 我今天提交了一個新版本的插入符號,但我會在發送之前進行這些更改。

您的代碼和輸出之間存在一點脫節。 我得到一個額外的警告:“至少有一個類級別不是有效的R變量名稱;如果生成類概率,這可能會導致錯誤,因為變量名稱將轉換為:X.0,X.1”。 paste命令中添加一個sep = "" ,它就會消失。

馬克斯

如果您嘗試運行插入符號模型並且錯誤地僅包含一個僅包含一個因子的因變量,您可能也會收到此錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM