在R randomForest中处理nas

时间:2016-09-09 03:44:09

标签: r na

我在R中使用randomForest函数来预测回归。我的数据有几个缺失值。我在randomForest调用中使用了参数na.action = na.omit,这似乎有效。但是当我预测测试数据并计算MSE时,我获得了MSE的NA。关于我可能做错的任何想法? 示例代码 -

set.seed(1)
train = sample(1: nrow(mydata), nrow(mydata)*0.7)
mydata.test= mydata[-train ,"y"]
rf.mydata =randomForest(y∼.,subset =train, mtry=10, importance =TRUE, na.action=na.omit)
yhat.rf = predict(rf.mydata ,newdata = mydata[-train ,])
mean(( yhat.rf - mydata.test)^2)

1 个答案:

答案 0 :(得分:0)

我在正则化随机森林中也遇到过类似的问题。 当您说na.action=na.omit时,它将忽略其中至少有一个具有NA值的列的所有数据。因此,在您的情况下,最终可能会忽略所有数据,从而根本无法训练模型。

解决方案:

  1. 检入数据集中是否存在一列具有所有NULL值的列。
  2. 删除这些具有所有NA值或大多数条目仅为NULL的列。

您可以采取其他解决方案。

rf.mydata =randomForest(y∼.,subset =train, mtry=10, importance =TRUE, na.action=na.roughfix)

roughfix的作用是基本上将NA值与列的平均值交换。如果您的数据非常稀疏,这可能是一个很好的解决方案。但是,如果数据是分布式的,则需要删除所有带有NA值的列,而没有其他选择。

希望有帮助。