当我通过拆分单个数据框来创建训练集和测试集,并使用
以下是一个可复现的示例:
现在,当我们使用训练和运行`predict()`测试的方式创建一个森林时...
测试矩阵对于最后一个观察值的预测为“1”,其中a='unwanted_char',b='4'。
randomForest
包构建随机森林时,对于一些在训练数据中不存在的因子水平,predict()
函数仍会输出结果。虽然这不会产生错误(这也是我在相关问题中寻找的答案),但我的问题是 randomForest()
模型预测值的基础是什么,因为它理想情况下应该会抛出以下错误...
Error in predict.randomForest() :
New factor levels not present in the training data
只是出于好奇想知道 randomForest()
方法是否对测试数据中的新因子水平做出了某种固有假设。以下是一个可复现的示例:
seq1 <- c(5,3,1,3,1,"unwanted_char",4,2,2,3,0,4,1,1,0,1,0,1)
df1 <- matrix(seq1,6)
df1 <- as.data.frame(df1)
colnames(df1) <- c("a","b","c")
train <- df1[1:4,]
test <- df1[5:6,]
现在,当我们使用训练和运行`predict()`测试的方式创建一个森林时...
forest1 <- randomForest(c~a+b,data=train,ntree=500)
test$prediction <- predict(forest1,test,type='response')
测试矩阵对于最后一个观察值的预测为“1”,其中a='unwanted_char',b='4'。
请注意:当您分别创建测试数据和训练数据时,预测函数会抛出上述错误而非进行预测。
randomForest
如何外推因子变量”。另外,你将涉及到一些因子处理的棘手问题。我建议编辑你的问题,使用字母作为输入,以明确因子问题。这里是一个可供参考的重写链接:https://gist.github.com/geneorama/6aa6c343506c47b980f0 - geneorama