[英]Caret and GBM Errors
我正在嘗試使用 R 中的caret
包進行多個具有用戶定義性能指標的嵌套交叉驗證過程。 我遇到了各種各樣的問題,所以我回過頭來看看是否有更多開箱即用的caret
使用問題,似乎我遇到了一個問題。
如果我運行以下命令:
install.packages("caret")
install.packages("gbm")
library(caret)
library(gbm)
data(GermanCredit)
GermanCredit$Class<-ifelse(GermanCredit$Class=='Bad',1,0)
gbmGrid <- expand.grid(.interaction.depth = 1,
.n.trees = 150,
.shrinkage = 0.1)
gbmMOD <- train(Class~., data=GermanCredit
,method = "gbm",
tuneGrid= gbmGrid,
distribution="bernoulli",
bag.fraction = 0.5,
train.fraction = 0.5,
n.minobsinnode = 10,
cv.folds = 1,
keep.data=TRUE,
verbose=TRUE
)
我收到錯誤(或類似):
{ 中的錯誤:任務 1 失敗 - “參數暗示不同的行數:619、381”
有警告:
1: In eval(expr, envir, enclos) :
model fit failed for Resample01: interaction.depth=1, n.trees=150, shrinkage=0.1
但是,如果我只運行 gbm 例程,一切都很好。
gbm1 <- gbm(Class~., data=GermanCredit,
distribution="bernoulli",
n.trees=150, # number of trees
shrinkage=0.10,
interaction.depth=1,
bag.fraction = 0.5,
train.fraction = 0.5,
n.minobsinnode = 10,
cv.folds = 1,
keep.data=TRUE,
verbose=TRUE
)
有兩個問題:傳遞cv.folds
導致了問題。 此外,您不需要將結果轉換為二進制數; 這導致train
認為這是一個回歸問題。 train
函數背后的想法是消除與建模函數的不一致,因此我們使用因子進行分類,使用數字進行回歸。
請注意 - 盡管此問題是由答案中描述的原因引起的,但舊版本的插入符號和 gbm 也可能出現錯誤消息(如下所示)。 我遇到了這個錯誤,在花了很多時間試圖找出問題所在之后,我不得不升級到最新版本的 caret (5.17-7) 和 gbm (2.1-0.1)。 這些是截至今天在 CRAN 上的最新版本。
Error in { :
task 1 failed - "arguments imply differing number of rows: ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.