【问题标题】:R- Random forest predict fails with NAs in predictorsR-随机森林预测失败,预测变量中有 NA
【发布时间】:2014-02-28 20:12:48
【问题描述】:

文档(如果我没看错的话)说随机森林预测函数在遇到某些观察的 NA 预测变量时会产生 NA 预测。

注意:如果对象继承自 randomForest.formula,则任何数据 NA 从预测中默默地省略。返回值 将在聚合树和单个树中相应地包含 NA 预测(如果需要),但不在邻近矩阵或节点矩阵中

但是,如果我尝试在预测变量中有一些 NA [2688 中的 7 个观察结果中的 NA] 的数据集上使用 predict 函数,我会遇到以下错误情况,并且预测会失败。

predict.randomForest 中的错误(模型, new.ds) : newdata 中的缺失值

如果可能的话,我想避免一个稍微混乱的解决方法。

我做错/读错了吗?它与"inherits from randomForest.formula" 子句有什么关系吗?

【问题讨论】:

    标签: r random-forest na


    【解决方案1】:

    使用文档中的一些示例:

    set.seed(1)
    x <- data.frame(x1=gl(32, 5), x2=runif(160), y=rnorm(160))
    rf1 <- randomForest(x[-3], x[[3]], ntree=10)
    > inherits(rf1,"randomForest.formula")
    [1] FALSE
    
    > iris.rf <- randomForest(Species ~ ., data=iris, importance=TRUE,
                             proximity=TRUE)
    > inherits(iris.rf,"randomForest.formula")
    [1] TRUE
    

    所以您可能调用了randomForest 而不使用公式接口来拟合您的模型。

    【讨论】:

    • 谢谢!任何想法为什么会这样?文档说,在大数据集上使用公式进行训练可能会变慢,这就是我不使用公式的原因(而且我已经有训练过的模型,我不想重新训练)。还有其他解决方法吗?
    • @user997943 我不知道为什么。这可能只是一个疏忽,也可能是有原因的。不过,我想不出一个原因。这将是一个相当简单的更改,因此可能值得向维护人员发送电子邮件询问。如果确实有原因,他们至少会知道“为什么”。
    • @user997943 在将数据传递给predict 时,您总是可以简单地自己调用na.omit
    • 是的,这就是我目前正在做的事情——但由于代码的结构,我必须做一些杂乱的杂技才能得到正确的预测。将向开发人员发送电子邮件
    猜你喜欢
    • 2019-05-04
    • 2014-08-07
    • 2021-03-21
    • 2013-05-01
    • 2014-08-17
    • 2018-12-22
    • 2019-07-10
    • 2021-06-23
    相关资源
    最近更新 更多