2016-12-02 335 views
0

如何在R中使用randomForest库运行随机森林,如果某些预测变量的列中有NaN值。具有NaN值的随机森林

rf <- randomForest(class ~ maxf + minf + d + startf + endf + f1.4 + f1.2 + f3.4 + minslope + maxslope+ bslope + eslope + avgsl + noex + noip, data=whistles_nov, importance=TRUE) 

给出了这样的错误:

Error in na.fail.default(list(class = c(6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, : 
missing values in object 

是否在MATLAB工作TreeBagger功能,不论NaN值吗?

+0

使用rfImpute来首先计算mssing值 –

+0

我会使用适当的插补方法(或者如果可接受的话移除带有NaN值的行)来运行它。如果它是一个类变量,你可能只需添加一个新的“缺少”类别。如果您在多个数字列中有很多缺失值,由于随机森林的工作原理,它可能会变得复杂。 –

回答

0

您应该阅读免费手册(link)当您输入“?randomForest”时,第17页显示的关键字“randomForest”下的相同材料也应该在r/rstudio中可用。

enter image description here

注意,它说: “na.action”。在那里的设置应该驱动它以更加期望的方式处理“NA”值。默认值,也突出显示,说“na.fail”。

第21页上给出的例子之一使用“na.omit”。我怀疑这会忽略na值的行。

您也可以考虑使用缺失值插补法将其替换为非NA值,但您必须确定这是否正确。 (link

从此(link)看来,MatLab默认为“na.omit”的一些有效变化。