[英]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
以指定哪些列具有新的因子水平? 還是有另一種快速的編程方式來識別有問題的列?
假設訓練集和測試集具有相同的列順序,則只需使用單個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,則訓練和測試集之間的因素水平之間會有差異。 由於它采用identical
的數字,邏輯或字符列的情況下的功能levels
返回NULL在這兩種情況下對其中identical
返回TRUE。
假設我明白了您在問題中的意思,只需查找上述函數返回的FALSE列即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.