随机森林模型错误(如果(n == 0)停止中的错误(“数据(x)有0行”))

Posted

技术标签:

【中文标题】随机森林模型错误(如果(n == 0)停止中的错误(“数据(x)有0行”))【英文标题】:Random forests model error (Error in if (n == 0) stop("data (x) has 0 rows")) 【发布时间】:2016-11-28 10:06:39 【问题描述】:

我已经很好地建立了我的随机森林模型,请看代码

modelRF <- randomForest(x=p$NDVI,
                   y=p$BushCategories,
                   ntree=500, do.trace=TRUE, 
                   importance=TRUE, forest=TRUE, na.action=na.omit)

然后它给出了下面的错误

Error in if (n == 0) stop("data (x) has 0 rows") : 
argument is of length zero

在下面查看我的数据结构

'data.frame':   197 obs. of  5 variables:
$ Waypoint_No   : chr  "OMATSC028" "OMATSC200" "OMATSC072N" "OMATSC317" ...
$ Longitude     : num  17.7 17.6 17.8 17.9 17.9 ...
$ Latitude      : num  -21.2 -21.2 -21.1 -20.9 -21.1 ...
$ NDVI          : num  0.256 0.327 0.25 0.268 0.283 ...
$ BushCategories: Factor w/ 4 levels "0-25%","26-50%",..: 3 1 2 3 2 3 1 2 1 
1 ...

可能是什么问题?

这是我的数据集的样例

x<-c('0.256', '0.327', '0.25', '0.268')
y<-c('0-25%','26-50%','51-75%','76-100%')
data<-data.frame(x,y)                       

【问题讨论】:

na.action=na.omit ?你可能在每一行都有 NA 吗?见***.com/questions/8370455/… 没有 NA,我已经删除了 NA 功能,但仍然出现该错误。 请提供reproducible data 这样我们就会得到同样的错误。 @zx8754 我已经用示例数据更新了问题。 【参考方案1】:

您的公式(randomForest 的第一个输入)是错误的。您必须在公式中指定类类型和训练数据,以便算法知道要训练什么。

在您的情况下,我假设您正在尝试从 BushCategories 预测 NDVI。所以你应该使用的公式是 NDVI ~ BushCategories。第二个元素是训练数据。所以,只要解决这个问题,它应该对你有用。

【讨论】:

以上是关于随机森林模型错误(如果(n == 0)停止中的错误(“数据(x)有0行”))的主要内容,如果未能解决你的问题,请参考以下文章

r 随机森林错误 - 新数据中的预测变量类型不匹配

算法岗面试题:模型的bias和variance是什么?用随机森林举例

使用 Python 的随机森林的高 OOB 错误

随机森林中的错误:“需要至少两个类来进行分类”

渐进式随机森林?

Opencv 300 - 随机森林预测返回错误答案