1

我正在尝试使用包rfcv中的功能randomForest。我收到如下错误消息:

> rfcv1 <- rfcv(x[1:18750,], testClass[1:18750], cv.fold=2)
Error in cut.default(trainy, c(-Inf, quantile(trainy, 1:4/5), Inf)) : 
  'breaks' are not unique
> nrow(unique(x[1:18750,]))
[1] 18719
> length(unique(testClass[1:18750])) ## just 0's and 1's
[1] 2

> head(x)
       rfPred prediction
3  0.34776664 0.30138045
5  0.22345507 0.11159273
7  0.03478699 0.02156816
17 0.01008994 0.01071626
24 0.01738253 0.01546157
25 0.01143016 0.01278491

> range(x)
[1] 0.003907361 0.966005867

有什么不对劲吗?我尝试缩小数据,以便唯一值可以被 5 整除,但仍然得到相同的消息。我也尝试了各种cv.fold=没有效果的值。

4

1 回答 1

1

我只是在这里猜测,但在 的代码中rfcv,我们看到:

if (classRF) {
   f <- trainy
}
else {
   f <- cut(trainy, c(-Inf, quantile(trainy, 1:4/5), Inf))
}

如果您正在进行分类,它只会使用您的trainy参数,否则它会尝试剪切变量。所以我的猜测是你有一个整数0 和 1 的向量,你需要将其转换为一个因子。

于 2011-12-07T18:03:07.813 回答