我很难获得一个tidymodels工作流程来做出新的预测。具体来说,我希望将结果变量的日志转换作为工作流的一部分,但当需要预测新的观察结果时,工作流的这一部分就会中断。
# recipe
trans_rec <-
recipe(Transactions ~ ., data = train.data) %>%
update_role(Event.ID, Opponent, new_role = "ID") %>%
step_date(Calendar.Date, features = c("dow",'month','year'),keep_original_cols = FALSE) %>%
step_log(Transactions,Total.Attendance)
# model
glm_spec <- linear_reg(penalty = tune()) %>%
set_engine(engine = 'glmnet')
param_grid <- grid_regular(penalty(),levels = 100)
wf <- add_recipe(workflow(), trans_rec)
mod_res <-
tune_grid(
wf %>%
add_model(glm_spec),
resamples = train.folds,
grid = tibble(penalty = seq(0.0,0.1,0.01)),
metrics = metric_set(rmse,rsq),
control = control_grid(save_pred=TRUE)
)
# finalizing workflow
final_mdl <- finalize_workflow(wf %>% add_model(glm_spec),final_lass)
# fit on full train data
fit_mod <- fit(final_mdl, train.data)
# test data predictions
predictions <- predict(fit_mod, test.data)
当我尝试最后一部分时,我得到了这个错误。
The following required column is missing from `new_data` in step 'log_1P9bM': Transactions.
现在,我在堆栈上看到了类似的问题,但OP最终没有扩展其结果tidymodels: "following required column is missing from new_data
in step..."。我不想这样做,事实上需要来记录转换这个变量。请让我知道我可以做些什么来将结果日志转换纳入我的工作流程,这样我就可以用这个过程来预测未来!
1条答案
按热度按时间qpgpyjmq1#
对于结果的日志转换,我们强烈建议在将它们传递给
recipe()
之前完成这些转换。这是因为你不能保证在预测新数据时会有结果。食谱失败了。因为日志转换不是一个学习的转换,所以您可以安全地在之前完成它。