您可以调整您的dplyr方法以使用tidyrandpurrr框架。您查看分组/嵌套,以及创建列表框架以存储工作流程片段的mutate和函数。map
您正在寻找的测试/训练拆分是modelr为帮助purrr框架内建模而构建的包的一部分。特别是cross_vmcandcross_vkfold函数。
一个使用的玩具示例mtcars(仅用于说明框架)。
library(dplyr)
library(tidyr)
library(purrr)
library(modelr)
analysis <- mtcars %>%
nest(-cyl) %>%
unnest(map(data, ~crossv_mc(.x, 1, test = 0.3))) %>%
mutate(model = map(train, ~lm(mpg ~ wt, data = .x))) %>%
mutate(pred = map2(model, train, predict)) %>%
mutate(error = map2_dbl(model, test, rmse))
这个:
- 需要 mtcars
data嵌套到由调用的列表框架中cyl
- 通过映射到每个元素将每个元素
data分成一个训练集crossv_mc,然后使用unnest它来制作test和train列出列。
- 将模型映射
lm到每个train,将其存储在model
predict将函数映射到model并train存储在pred
rmse将函数映射到错误设置model和test存储。
那里可能有比我更熟悉工作流程的用户,所以请更正/详细说明。