4

我正在尝试将caretR 中的包用于具有用户定义的性能指标的几个嵌套交叉验证过程。我遇到了各种各样的问题,所以我回过头来看看是否存在更多开箱即用的问题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
)
4

2 回答 2

4

有两个问题:通过cv.folds导致问题。此外,您不需要将结果转换为二进制数;这导致train认为这是一个回归问题。该函数背后的想法train是消除与建模函数的不一致性,因此我们使用因子进行分类,使用数字进行回归。

于 2013-08-05T12:48:07.150 回答
0

请注意 - 尽管此问题是由答案中描述的原因引起的,但旧版本的插入符号和 gbm 也可能出现错误消息(如下所示)。我遇到了这个错误,在花了很多时间试图找出问题所在之后,我不得不升级到最新版本的 caret (5.17-7) 和 gbm (2.1-0.1)。这些是今天在 CRAN 上的最新版本。

Error in { : 
task 1 failed - "arguments imply differing number of rows: ...
于 2013-10-11T21:37:11.387 回答