当cv.folds>时,R gbm函数出错0

时间:2014-08-26 20:18:22

标签: r gbm

我正在使用gbm来预测二进制响应。 当我设置cv.folds = 0时,一切都运行良好。然而,当cv.folds> 1,当第一次交叉验证的烦恼结束时,我收到错误:Error in object$var.levels[[i]] : subscript out of bounds。有人说这可能是因为一些因子变量在训练或测试数据中缺少水平,但我尝试只使用数值变量并仍然得到这个错误。

> gbm.fit <- gbm(model.formula,
+                data=dataall_train,
+                distribution = "adaboost",
+                n.trees=10,
+                shrinkage=0.05,
+                interaction.depth=2,
+                bag.fraction = 0.5,
+                n.minobsinnode = 10,      
+                train.fraction=0.5,
+                cv.folds=3,
+                verbose=T,
+                n.cores=1)
CV: 1 
CV: 2 
CV: 3 
Error in object$var.levels[[i]] : subscript out of bounds

有人对此有一些见解吗?谢谢!

回答我的自我: 问题解决了。这是因为这个函数中的一个bug。输入数据不能包含模型中变量以外的变量。

1 个答案:

答案 0 :(得分:9)

我的第二个解决方案:R函数 gbm()中的输入数据不能包含模型中不使用的变量(列)。