我在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)
答案 0 :(得分:0)
我在正则化随机森林中也遇到过类似的问题。
当您说na.action=na.omit
时,它将忽略其中至少有一个具有NA
值的列的所有数据。因此,在您的情况下,最终可能会忽略所有数据,从而根本无法训练模型。
解决方案:
您可以采取其他解决方案。
rf.mydata =randomForest(y∼.,subset =train, mtry=10, importance =TRUE, na.action=na.roughfix)
roughfix
的作用是基本上将NA
值与列的平均值交换。如果您的数据非常稀疏,这可能是一个很好的解决方案。但是,如果数据是分布式的,则需要删除所有带有NA
值的列,而没有其他选择。
希望有帮助。