具有 NaN 值的随机森林
Posted
技术标签:
【中文标题】具有 NaN 值的随机森林【英文标题】:random forest with NaN values 【发布时间】:2017-04-17 15:43:06 【问题描述】:如果某些预测变量的列中有 NaN 值,我如何使用 randomForest 库在 R 中运行随机森林。
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 值无关?
【问题讨论】:
首先使用 rfImpute 估算 mssing 值 我会使用适当的插补方法(或者如果可以接受,则删除具有 NaN 值的行)来运行它。如果它是一个类变量,您可能只需添加一个新的“缺失”类别。如果您在多个数值列中有大量缺失值,则可能会因为随机森林的工作方式而变得复杂。 【参考方案1】:您应该“阅读免费手册”(link) 当您键入“?randomForest”时,在 r/rstudio 中也应该可以使用关键字“randomForest”下显示的第 17 页相同的材料。
注意上面写着“na.action”。那里的设置应该驱动它以更理想的方式处理“NA”值。默认值也突出显示,表示“na.fail”。
第 21 页给出的示例之一使用“na.omit”。我怀疑这会省略具有 na 值的行。
您也可以考虑使用缺失值插补将其替换为非 NA 值,但您必须确定这样做是否正确。 (link)
从这个 (link) 看来,MatLab 默认使用“na.omit”的一些有效变体。
【讨论】:
以上是关于具有 NaN 值的随机森林的主要内容,如果未能解决你的问题,请参考以下文章
Scikit-learn - ValueError:输入包含 NaN、无穷大或对于随机森林的 dtype('float32') 来说太大的值