Stuck with :For a classification model, the outcome should be a `factor`, not a `tbl_df`

105 Views Asked by At

Since days I get the above mentioned error. Here the output of my df: `

tibble [9,874,170 × 4] (S3: tbl_df/tbl/data.frame)
$ series_id: chr [1:9874170] "08db4255286f" "08db4255286f" "08db4255286f" "08db4255286f"
$ anglez : num [1:9874170] -14.5 -14.5 -14.5 -14.4 -14.4 ...
$ enmo : num [1:9874170] 0.0032 0.0028 0.0033 0.0028 0.003 ...
$ awake : Factor w/ 2 levels "awake","sleep": 1 1 1 1 1 1 1 1 1 1 ...`

Using this recipe:

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_"),
            role = "outcome") |> 
    step_window(anglez,
            size = 11, statistic = "sd",
            names = paste0("sd_7ang_"),
            role = "outcome") |> 
    step_window(enmo,
            size = 7, statistic = "mean",
            names = paste0("med_7enmo_"),
            role = "outcome") |> 
    step_window(enmo,
            size = 11, statistic = "sd",
            names = paste0("sd_7enmo_"),
            role = "outcome") |> 
    step_naomit()

and this model:

lgbm_spec <- boost_tree() %>%  
set_engine("lightgbm") %>% 
set_mode("classification")
lgbm_wf <- 
    workflow() %>% 
    add_recipe(basic_rec) %>% 
    add_model(lgbm_spec)

awake is definitely a factor.

train |> count(awake)
# A tibble: 2 × 2
  awake       n
  <fct>   <int>
1 awake 3379743
2 sleep 6494427

Where is my mistake?

0

There are 0 best solutions below