我真的很喜欢 tidymodels,但我不清楚如何将模型工作流适应嵌套 group by 之类的东西。例如,tidyr 在类似 mtcars 的圆柱体上勾勒出一个简单的嵌套,然后为每个圆柱体拟合一个独特的线性 reg 模型。我正在尝试基于诸如圆柱体之类的东西来拟合数百个独特的模型(可能是随机森林),但使用的是 tidymodels 工作流程(数据拆分、配方、预测)。
以下是 tidyr 页面上作为简单嵌套/拟合线性 reg 概述的内容:
mtcars_nested <- mtcars %>%
group_by(cyl) %>%
nest()
mtcars_nested <- mtcars_nested %>%
mutate(model = map(data, function(df) lm(mpg ~ wt, data = df)))
mtcars_nested
有没有办法做类似下面的事情,但基于列中的 group_by 或 nest 属性?如果可能,则需要将每个预测和/或准确性组合并存储在一个数据帧中。我尝试将数据拆分为嵌套数据框,但它没有用。我觉得这是一个 purrr 地图问题,但不清楚 tidymodels 是否已经支持:
library(tidymodels)
library(tidyverse)
#add dataset
mtcars <- mtcars
#create data splits
split <- initial_split(mtcars)
mtcars_train <- training(split)
mtcars_test <- testing(split)
#create recipe
mtcars_recipe <-
recipe(mpg ~., data = mtcars_train) %>%
step_normalize(all_predictors())
#define model
lm_mod <-
linear_reg(mode = "regression") %>%
set_engine("lm")
#create workflow that combines recipe & model
mtcars_workflow <-
workflow() %>%
add_model(lm_mod) %>%
add_recipe(mtcars_recipe)
#fit workflow on train data
mtcars_fit <-
fit(mtcars_workflow, data = mtcars_train)
#predict on test data
predictions <-
predict(mtcars_fit, mtcars_test)
感谢帮助/建议/指导。