Tidymodels中如何使用recipes包指定计算生成的response响应变量
解决方案
在recipes工作流中,不需要重新调用recipe()函数定义配方,直接使用update_role()函数修改已生成计算列的角色即可,具体实现如下:
library(recipes) # 原有计算列生成逻辑后追加角色修改步骤 rec <- recipe(~ ., data = training) %>% step_mutate(response = as.integer(all(c('A', 'B') %in% Col4) & Col4 == 'A')) %>% # 将新生成的response列角色修改为响应变量(outcome) update_role(response, new_role = "outcome") %>% # 后续可直接对响应变量执行处理步骤 step_naomit(response)
相关说明
- recipes中所有列都有对应角色,初始调用
recipe(~ ., data = training)时所有原始列的默认角色为predictor(预测变量),通过step_mutate生成的新列默认也会被分配predictor角色,update_role()可以直接修改指定列的角色为outcome(响应变量),完全符合流程要求。 - 你提供的参考代码存在语法问题:管道语法下
step_*系列函数会自动接收前序传递的配方对象作为第一个参数,不需要手动传入配方对象。 - 可执行
summary(rec)查看所有列的角色分配,确认response列的角色已经修改为outcome。
内容的提问来源于stack exchange,提问作者piper180
相关产品推荐
相关产品推荐

