在randomForest中使用NA级别进行预测时出错

时间:2014-05-12 04:19:02

标签: r random-forest

全部,

考虑以下示例:

Y <- iris[, 1]
X <- iris[, 2:5]
X[seq(10, 150, 10), 4] <- NA
X[, 4] <- addNA(X[, 4])
fit <- randomForest(X, Y)
predict(fit) #..Works fine
predict(fit, newdata = X) #..Throws an error

Error in predict.randomForest(fit, newdata = X) : 
  Type of predictors in new data do not match that of the training data.

即使将NA明确定义为因子级别,它仍然不能与predict.randomForest一起使用。除了手动重新编码NA之外,我还有其他选择,因为addNA似乎没有像我预期的那样工作吗?

干杯,

亚伦

2 个答案:

答案 0 :(得分:1)

嗯,通常,如果您希望获得用于生成模型的数据的预测,则只需调用不带newdata=参数的预测。在这种情况下,这有用吗?

但我认为这不是你真正想做的事情,事实上你确实想要预测新数据。它真的无助于给出一个有效的例子,我们需要一个可重复的例子来说明什么是行不通的。但是在看了这个问题(https://stats.stackexchange.com/questions/62015/prediction-with-randomforest-r-and-missing-values)后,似乎可能会像你预测的那样对NA值做。

答案 1 :(得分:0)

我无法找到一种方法来使用包含addNA添加的NA因子水平的新数据。如果您想将缺失视为新预测数据的因子级别,那么对我有用的是在将字符向量定义为因子之前手动将NA重新编码为"na"。在模型训练和测试阶段执行此步骤可以让我得到我正在寻找的结果。

Y <- iris[, 1]
X <- iris[, 2:5]
X[seq(10, 150, 10), 4] <- NA
X[, 4] <- as.character(X[, 4])
X[is.na(X[, 4]), 4] <- 'na'
X[, 4] <- factor(X[, 4])
fit <- randomForest(X, Y)
predict(fit, newdata = X)