library(randomForest)
rf.model <- randomForest(WIN ~ ., data = learn)
我想拟合一个随机森林模型,但我得到了这个错误:
Error in na.fail.default(list(WIN = c(2L, 1L, 1L, 2L, 1L, 2L, 2L, 1L, :
missing values in object
我有一个数据框,其中包含16个数字特征和一个名为WIN的因子,其级别为0和1。
library(randomForest)
rf.model <- randomForest(WIN ~ ., data = learn)
我想拟合一个随机森林模型,但我得到了这个错误:
Error in na.fail.default(list(WIN = c(2L, 1L, 1L, 2L, 1L, 2L, 2L, 1L, :
missing values in object
我有一个数据框,其中包含16个数字特征和一个名为WIN的因子,其级别为0和1。
如果您的数据存在缺失值,您基本上有两种选择:
rpart
可以很好地处理缺失值)。不出所料,randomForest
包中有一个专门用于此目的的函数rfImpute
。在?rfImpute
的文档中,通过一个基本示例演示了它的使用方法。
还有na.roughfix
,它会用中位数/众数替换缺失值。当调用randomForest
时,您可以通过设置na.action = na.roughfix
来使用它。
如果只有少量案例存在缺失值,您还可以尝试设置na.action = na.omit
来简单地删除这些案例。
当然,这个答案只是猜测您的问题可能实际上只是存在缺失值。
WIN ~ .
是什么意思吗?这肯定不是问问题的最佳场所,但我想知道你是否知道。谢谢。 - Amelio Vazquez-Reina na.action = na.roughfix
在Breiman的主页上,您可以找到更多信息:...NAs用列中位数替换....这用作通过随机森林填充缺失值的起点
missfill=1,2快速替换训练集中的缺失值(如果等于1),并进行更仔细的替换(如果等于2)。
mfixrep=k与missfill=2一起使用时,仅在训练集上进行k次迭代,使用相似性进行较慢但通常更有效的替换。(需要nprox>0)。
new.vars<-is.na(your_dataset)
),并检查是否降低误差。如果new.var
太大而无法添加到your_dataset
中,则可以单独使用它,使用varImpPlot
选择重要变量并将其添加到your_dataset
中。您还可以尝试向your_dataset
中添加单个变量,该变量计算NA
的数量new.var <- rowSums(new.vars)
。