簡體   English   中英

使用randomForest使預測指定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以指定哪些列具有新的因子水平? 還是有另一種快速的編程方式來識別有問題的列?

假設訓練集和測試集具有相同的列順序,則只需使用單個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM