【问题标题】:Predict() returns only NA with Random ForestPredict() 仅返回带有随机森林的 NA
【发布时间】:2020-12-26 05:38:09
【问题描述】:

我使用随机森林构建了一个模型,并尝试使用 predict() 在另一个数据库上对其进行测试。但是,它只返回 NA。

RF=randomForest(intention~., data=train,ntree=1000,na.action=na.roughfix) 
#no NA in the train nor the test dataset

# Predicting
pred <-predict(RF, newdata=test,type="response")
#pred vector is only set to NA

我检查了这个页面并检查了我的数据集没有 NA。但是,我继续获得相同的回报。 https://www.kaggle.com/c/the-analytics-edge-mit-15-071x/discussion/7808

我也检查了这个页面,但它对于随机森林似乎并不准确(或者我不明白)。 r - loess prediction returns NA

感谢您的帮助!

【问题讨论】:

  • test 是否包含所有与train 相同的变量名称?您还没有向我们展示您的数据,因此您只会在这里得到猜测,而不是答案。
  • 您确实触及了@Allan Cameron 的观点。我在测试和训练上运行了一个循环(如堆栈上的另一篇文章所示),以删除数据很少的列,并创建不对称数据集(循环在训练中删除了 5 列,但在测试中删除了 9 列)!谢谢你的猜测,我不知道它可能源于那里。
  • - 认为如果它来自数据会出错。为什么这不会出错?

标签: r random-forest na predict


【解决方案1】:

正如@Allan Cameron 猜测的那样,问题出在数据集的不对称性上。 在运行 RF 算法时遇到问题,我在这个论坛上找到了一个建议,使用以下代码删除值太少的变量。

index <- c()
 for (j in (1 : 41))   {
   if (is.numeric(train[ ,j])  &  length(unique(as.numeric(train[ ,j]))) == 1 )
     {index <- append(index,j)}
train <- train[ ,-index]
#ran on test dataset too

但是,我没有看到它在火车上删除了 5 列,在测试中删除了 9 列。函数 predict() 尝试将使用 51 个变量构建的模型应用于具有 47 个变量的数据集返回 NA 但没有错误。

【讨论】:

    猜你喜欢
    • 2013-04-25
    • 2019-12-06
    • 1970-01-01
    • 2015-09-16
    • 2018-10-18
    • 2017-03-15
    • 2018-06-24
    • 2016-04-24
    • 1970-01-01
    相关资源
    最近更新 更多