【问题标题】:r- caret package error- createDataParition no observationr- caret 包错误- createDataParition 没有观察
【发布时间】:2018-10-31 22:36:22
【问题描述】:

当我尝试在插入符号中运行 createDataPartition 时出现以下错误。

Error in createDataPartition(data1, p = 0.8, list = FALSE) : 
  y must have at least 2 data points

我昨晚运行了完全相同的代码,没有任何错误。有什么想法吗?

predictors<- with(df, data.frame(xvar, xvar, xvar, xvar))
data1<-with(dfu2, data.frame(data1))
library(caret)
set.seed(1)
trainingRows<- createDataPartition(data1,
                                   p=.80,
                                   list=FALSE)
> dput(head(data1, 15)) structure(list(data1 = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L)), .Names = "data1", row.names = c(NA, 15L), class = "data.frame")

数据框data1 在我的环境中清晰可见,并且具有预期的观察结果。有什么想法吗?

【问题讨论】:

标签: r r-caret


【解决方案1】:

这不起作用,因为data1 在您的情况下是一个data.frame,而它应该是一个向量,因为它在?createDataPartition 的文档中提到。看这个例子:

#using your data
data1 <- structure(list(data1 = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L)), .Names = "data1", row.names = c(NA, 15L), class = "data.frame")

现在如果我这样做:

> createDataPartition(data1)
Error in createDataPartition(data1) : y must have at least 2 data points

我遇到了和你一样的错误。而如果是向量:

> createDataPartition(data1[[1]] )
$Resample1
[1]  1  2  3  4  8  9 12 15

效果很好。

因此,只需在 CreateDataPartition 调用中的代码中使用 data1[[1]] 即可。

【讨论】:

    【解决方案2】:

    我通过将目标数据类型从字符更改为因子解决了同样的问题,因为下采样函数要求响应应该是因子类型。希望这会有所帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-29
      • 1970-01-01
      • 2015-08-17
      相关资源
      最近更新 更多