提问人:Hack-R 提问时间:3/4/2015 更新时间:3/31/2015 访问量:85
使用 randomForest 使 predict 在 R 中指定不良因子水平
Make predict specify bad factor level in R with randomForest
问:
我在 R 中运行一个模型,其中包含示例验证数据:randomForest
predictions <- predict(rf, newdata = model_final, type = "prob")
显然在某个地方有一个新的因子水平,导致了这个消息:
Error in predict.randomForest(rf, newdata = model_final, type = "prob") :
New factor levels not present in the training data
忽略特定于我的数据和模型的所有内容,有没有办法强制指定哪些列是具有新因子水平的列?或者有没有另一种快速的编程方法来识别有问题的列?predict
答:
1赞
LyzandeR
3/4/2015
#1
假设训练集和测试集的列顺序相同,只需使用单个 mapply 来识别级别不相同的位置:factor
示例数据
training <- data.frame(a=as.factor(letters), b=letters, stringsAsFactors=F)
test <- data.frame(a=as.factor(rep(letters[1:20],3)), b=rep(letters[1:20],3), stringsAsFactors=F)
溶液
> mapply(function(x,y) identical(levels(x), levels(y)), training, test )
a b
FALSE TRUE
如果上述结果返回 FALSE,则训练集和测试集之间的因子水平之间存在差异。由于它使用数字列、逻辑列或字符列的情况,因此该函数在这两种情况下都返回 NULL,因此返回 TRUE。identical
levels
identical
假设我明白了您在问题中的意思,只需查找从上述函数返回的 FALSE 列即可。
评论