【问题标题】:Random Forest in R: New factor levels not present in the training dataR中的随机森林:训练数据中不存在新的因子水平
【发布时间】:2017-07-14 10:42:38
【问题描述】:

好的,关于泰坦尼克号比赛的另一个新手问题:

我正在尝试对我的测试数据进行随机森林预测。我所有的工作都是在组合测试和训练数据上完成的。

我现在已将 2 拆分为 testdata 和 trainingdata

我有以下代码:

trainingdata <- droplevels(data.combined[1:891,])
testdata <- droplevels(data.combined[892:1309,])

fitRF <- randomForest(as.factor(Survived) ~ Pclass + Sex + Age + SibSp 
+ Parch + Fare + Embarked
                   + new.title + family.size + FamilyID2,
                  data=trainingdata,
                  importance =T,
                  ntree=2000)

varImpPlot(fitRF)

#All works up to this point


Prediction <- predict(fitRF, testdata)
#This line above generates error
submit <- data.frame(PassengerID = data.combined$PassengerId, Survived 
= Prediction)
write.csv(submit, file="14072017_1_RF", row.names = F)

当我运行预测行时,我收到以下错误:

> Prediction <- predict(fitRF, testdata)
Error in predict.randomForest(fitRF, testdata) : 
  New factor levels not present in the training data

当我跑步时 str(testdata) 和 str(trainingdata) 我可以看到 2 个不再匹配的因素

Trainingdata      
$ Parch            : Factor w/ 7 levels 

Testdata
$ Parch            : Factor w/ 8

Trainingdata
$ FamilyID2        : Factor w/ 22 

Testdata
$ FamilyID2        : Factor w/ 18

是这些差异导致我的错误发生吗?如果是这样,我该如何解决这个问题?

非常感谢

其他信息: 我已经从 RandomForest 创建行中删除了 Parch 和 FamilyID2,代码现在可以工作了,所以肯定是这 2 个变量导致了级别不匹配的问题。

【问题讨论】:

标签: r random-forest predict levels


【解决方案1】:

这里的新手,这些天我只是在玩泰坦尼克号。我认为将 Parch 变量作为一个因素是没有意义的,所以也许将其设为数字​​,这可能会解决问题:

train$Parch

否则,测试数据有 2 个 obs,Parch 的值为 9,它们不存在于训练数据中:

> table(train$Parch)

0   1   2   3   4   5   6 
678 118  80   5   4   5   1 

> table(test$Parch)

0   1   2   3   4   5   6   9 
324  52  33   3   2   1   1   2 
> 

或者,如果您需要将变量作为一个因素,那么您可以添加另一个级别:

train$Parch <- as.factor(train$Parch) # in my data, Parch is type int
train$Parch
levels(train$Parch) <- c(levels(train$Parch), "9") 
train$Parch # now Parch has 7 levels
table(train$Parch) # level 9 is empty

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-20
    • 2013-06-25
    • 2019-07-20
    • 2021-07-06
    • 2016-11-05
    • 2021-03-21
    • 2018-06-13
    • 2020-11-30
    相关资源
    最近更新 更多