您可以调整您的dplyr
方法以使用tidyr
andpurrr
框架。您查看分组/嵌套,以及创建列表框架以存储工作流程片段的mutate
和函数。map
您正在寻找的测试/训练拆分是modelr
为帮助purrr
框架内建模而构建的包的一部分。特别是cross_vmc
andcross_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
存储。
那里可能有比我更熟悉工作流程的用户,所以请更正/详细说明。