所以我对正在发生的事情有一个很好的了解,但我想知道如何处理这个错误,我看过其他类似的帖子,但它们并不特定于 Gradient Boosting Machine 模型。它们似乎都与 GLM 有关,并且错误不是由我不认为的同一件事引起的。
这是我的代码:
myTuneGrid <- expand.grid(n.trees=c(100,200), interaction.depth=c(9,10,11,12), shrinkage=0.1, n.minobsinnode=10)
fitControl <- trainControl(method = "cv", number =5,verboseIter = FALSE,returnResamp = "all")
myModel <- train(as.factor(target) ~ .,data = trainingDataC.GB, method = "gbm",trControl = fitControl,tuneGrid = myTuneGrid)
myPrediction <- predict(myModel,newdata=testDataC)
这是我的错误:
model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) 中的错误:因子 47V 具有新级别 E、H、J
所以我的因子变量在我的训练集中有很多级别,但是从错误中我猜不是所有级别都在我的训练集中表示。当我进入我的测试集时,我的训练集中没有新的关卡,所以我收到了这个错误?
这是一个监督学习问题,我无法更改测试集并将数据移动到训练集。所以这不是抽样问题。
无论如何,有没有人知道任何设置或快速修复,以免导致我的程序崩溃?