r - 尝试使用 5 折拆分 df 进行交叉()得到“错误:`x` 必须是向量,而不是 `rsplit/vfold_split` 对象”
问题描述
我有一个看起来像这样的变量 train_cv:
> train_cv
# 5-fold cross-validation using stratification
# A tibble: 5 x 4
splits id train validate
* <named list> <chr> <named list> <named list>
1 <split [72K/18K]> Fold1 <df[,10] [72,000 × 10]> <df[,10] [18,001 × 10]>
2 <split [72K/18K]> Fold2 <df[,10] [72,001 × 10]> <df[,10] [18,000 × 10]>
3 <split [72K/18K]> Fold3 <df[,10] [72,001 × 10]> <df[,10] [18,000 × 10]>
4 <split [72K/18K]> Fold4 <df[,10] [72,001 × 10]> <df[,10] [18,000 × 10]>
5 <split [72K/18K]> Fold5 <df[,10] [72,001 × 10]> <df[,10] [18,000 × 10]>
> glimpse(train_cv)
Observations: 5
Variables: 4
$ splits <named list> [<rsplit[72000 x 18001 x 90001 x 10]>, <rsplit[72001 x 18000 x 90001 x 10]>, <rsplit[72001 x 18000 x 90001 x 10]>, <rsplit[72001 x 18000 x 90001 x 10]>, <rsplit[72001 x 18000 x 90001 x 10]>]
$ id <chr> "Fold1", "Fold2", "Fold3", "Fold4", "Fold5"
$ train <named list> [<data.frame[72000 x 10]>, <data.frame[72001 x 10]>, <data.frame[72001 x 10]>, <data.frame[72001 x 10]>, <data.frame[72001 x 10]>]
$ validate <named list> [<data.frame[18001 x 10]>, <data.frame[18000 x 10]>, <data.frame[18000 x 10]>, <data.frame[18000 x 10]>, <data.frame[18000 x 10]>]
我试图crossing()
用一些 mtry 参数来交叉每个折叠:
> model_ranger <- train_cv %>%
+
+ crossing(mtry = c(1,2,4,8))
Error: `x` must be a vector, not a `rsplit/vfold_split` object
我从一个做这件事的在线课程中复制了这个,使用交叉在一个数据帧上,该数据帧使用rsample::vfold_cv()
. 除了我看到这个错误信息。
为什么会出现此错误,如何将 5 个 cv 折叠中的每一个与mtry = c(1,2,4,8)
解决方案
我试过了,它奏效了:
model_ranger <- train_cv %>% expand_grid(mtry = c(1,2,4,8))
推荐阅读
- c# - 在用数据库中的数据填充组合框时,我创建了 SqlDataReader。我希望检索带有产品名称的列
- python - 如何在 Python 3 中将过滤器对象的元素获取到列表中?
- jquery - 3D 翻转卡在 Iphone 上没有旋转
- javascript - 数据未定义
- android - 尝试创建正确布局的问题
- regex - 尝试使用 RegEx 在文件中查找特定字符串
- c# - 视图没有被模型更新
- docker - 使用 Dockerfile 将文件从容器复制到主机
- angularjs - 从指令调用 $http 在 angularjs watch 中
- r - addMarkers 需要 R Shiny 中的非 NULL 经度/纬度值