我试图使用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
)发布于 2013-08-05 12:48:07
有两个问题:传递cv.folds造成了问题。另外,您不需要将结果转换为二进制数字;这会导致train认为这是一个回归问题。train函数的思想是为了消除建模函数的不一致性,因此我们使用因子进行分类,使用数字进行回归。
发布于 2013-10-11 21:37:11
请注意,虽然这个问题是由答案中描述的原因引起的,但错误消息(如下所示)也可能发生在旧版本的插入符号和gbm中。我遇到了这个错误,在花了很多时间试图找出问题所在之后,我不得不升级到最新版本的插入符号(5.17-7)和gbm (2.1-0.1)。这些是最近的版本,到今天在CRAN上。
Error in { :
task 1 failed - "arguments imply differing number of rows: ...https://stackoverflow.com/questions/14802575
复制相似问题