You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

分类模型报错:结果应为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 09:45:20