分类模型报错:结果应为factor而非tbl_df,求问题排查
问题诊断与解决方案
问题出在你的recipe代码里的**step_window步骤配置**:
你在四个step_window中都错误地将生成的窗口统计特征的角色设置为了"outcome"。原本awake ~ .已经明确指定awake是唯一的分类目标变量,而这些窗口统计值是用来辅助预测的自变量,强行把它们标记为outcome会导致最终预处理后的数据集里,目标变量变成了包含原awake和这些新特征的tibble集合,这就触发了模型的类型校验错误——分类模型要求目标变量是单一的factor,而非tibble。
修正后的Recipe代码
只需移除所有step_window中的role = "outcome"参数即可(step_window默认会将生成的特征标记为predictor,也就是自变量):
basic_rec <- recipe(awake ~ ., data = train) |> update_role(series_id, new_role = "id variable") |> step_mutate(prev_anglez = lag(anglez)) |> step_mutate(next_anglez = lead(anglez)) |> step_mutate(prev_enmo = lag(enmo)) |> step_mutate(next_enmo = lead(enmo)) |> step_window(anglez, size = 7, statistic = "mean", names = paste0("med_7ang_")) |> step_window(anglez, size = 11, statistic = "sd", names = paste0("sd_7ang_")) |> step_window(enmo, size = 7, statistic = "mean", names = paste0("med_7enmo_")) |> step_window(enmo, size = 11, statistic = "sd", names = paste0("sd_7enmo_")) |> step_naomit()
验证修正效果
你可以运行以下代码查看预处理后的数据集结构,确认awake仍是唯一的factor类型目标变量:
prep(basic_rec) |> bake(new_data = NULL) |> str()
内容的提问来源于stack exchange,提问作者Peter Hahn
相关产品推荐
相关产品推荐

