R的randomForest包中的缺失值错误

Posted

技术标签:

【中文标题】R的randomForest包中的缺失值错误【英文标题】:Missing value error in the randomForest package of R 【发布时间】:2015-11-20 15:48:06 【问题描述】:

我正在使用randomForest 包通过标准过程对二进制结果变量进行分类。我首先必须强制更改所有变量以确保它们是数字,然后使用 na.roughfix 处理缺失值:

data <- read.csv("data.csv")
data <- lapply(data, as.numeric)
data <- na.roughfix(data) 

然后我运行模型:

model <- randomForest(as.factor(outcome) ~ V1 + V2...+ VN, 
         data=data, 
         importance=TRUE,
         ntree=500)

我收到以下错误:

na.fail.default(list(as.factor(outcome) = c(2L, 2L, 1L, : 对象中的缺失值

na.roughfix 插补应该已经解决了这个问题(我之前已经让它工作了,research on here shows that it should work),对吧?有什么建议?

【问题讨论】:

【参考方案1】:

您的lapply 行没有达到您的预期。结果不再是一个数据框,只是一个列表。因此,na.roughfixdata.frame 方法没有被调度,只是默认方法,如果它不是原子的,它只会返回它的第一个参数(你的列表显然不是)。

将每列转换为数字但保留数据框属性的有点偷偷摸摸的方法是:

data[] <- lapply(data,as.numeric)

或者,您可以简单地通过as.data.frame 将其转换回来。

【讨论】:

感谢您的回复。我之前实际上已经尝试过as.data.frame 解决方案。我重试了,也给data[] &lt;- lapply(data,as.numeric) 运行了一次,但仍然出现同样的错误。 @bencrosier 好吧,如果您需要更具体的帮助,您必须提供一个可重复的示例。

以上是关于R的randomForest包中的缺失值错误的主要内容,如果未能解决你的问题,请参考以下文章

包含缺失值的分类、数字和“不需要”变量的混合的随机森林

if (any(co)) 中的错误:需要 TRUE/FALSE 的缺失值

R语言自定义函数计算dataframe每列中的缺失值NA的个数缺失值问题及其填充示例

使用KNN进行缺失值填补详解及实践

R语言使用isna函数查看列表和dataframe中是否包含缺失值将dataframe中数据列中的异常值标注为缺失值NA使用na.omit函数删除dataframe中包含缺失值NA的数据行

用于树的 train() 函数插入符号中的缺失值错误