R语言 tidymodels工作流中的日志转换结果变量

mznpcxlj  于 2023-05-04  发布在  其他
关注(0)|答案(1)|浏览(101)

我很难获得一个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..."。我不想这样做,事实上需要来记录转换这个变量。请让我知道我可以做些什么来将结果日志转换纳入我的工作流程,这样我就可以用这个过程来预测未来!

qpgpyjmq

qpgpyjmq1#

对于结果的日志转换,我们强烈建议在将它们传递给recipe()之前完成这些转换。这是因为你不能保证在预测新数据时会有结果。食谱失败了。
因为日志转换不是一个学习的转换,所以您可以安全地在之前完成它。

train.data$Transactions <- log(train.data$Transactions)

if (!is.null(test.data$Transactions)) {
  test.data$Transactions <- log(test.data$Transactions)
}

相关问题