R随机森林:数据(x)有0行

6

我正在使用randomForest包中的randomForest函数来查找最重要的变量: 我的数据框叫做urban,我的响应变量是数字型的revenue。

urban.random.forest <- randomForest(revenue ~ .,y=urban$revenue, data = urban, ntree=500,    keep.forest=FALSE,importance=TRUE,na.action = na.omit)

I get the following error:

Error in randomForest.default(m, y, ...) : data (x) has 0 rows

在源代码中,它与x变量相关:

n <- nrow(x)
p <- ncol(x)
if (n == 0) 
stop("data (x) has 0 rows")

但我无法理解x是什么。


1
你正在混淆公式和默认方法。如果你将一个公式传递给 randomForest,那么就不应该再传递 y 值,因为函数会假定该公式是 x 值,并且可能会出现问题。 - Roland
我移除了y=urban$revenue,但错误仍然存在:Error in randomForest.default(m, y, ...) : data (x) has 0 rows。 - Hamideh
我还有一个新的错误:此外,警告消息:在randomForest.default(m, y, ...)中: 响应变量只有五个或更少的唯一值。你确定要进行回归吗?尽管我的响应变量有58个唯一值,长度为length(unique(urban$revenue))# == 58。 - Hamideh
错误可能在您的数据中,因为您的代码行在使用鸢尾花数据时运行良好。urban.random.forest <- randomForest(Species ~ ., data=iris, ntree=500, keep.forest = FALSE, importance = TRUE, na.action = na.omit) - David Arenburg
2个回答

3

我曾经遇到过类似的问题,原因在于我传入了函数的字符串版本。

y ~ x1 + .... xn

将输入转换为as.Formula()可解决randomForest调用的公式参数问题。希望这能省些时间!

3

我解决了这个问题。我的一些列的所有值都是NA或相同的。我删除了它们,然后就没问题了。我的列类型包括字符型、数值型和因子型。

 candidatesnodata.index <- c()
 for (j in (1 : ncol(dataframe)))   {

   if (    is.numeric(dataframe[ ,j])  &  length(unique(as.numeric(dataframe[ ,j]))) == 1      )
     {candidatesnodata.index <- append(candidatesnodata.index,j)}
                                }

dataframe <- dataframe[ , - candidatesnodata.index]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接