if (FALSE) { # rlang::is_installed(c("kknn", "modeldata", "recipes", "yardstick"))
library(workflowsets)
library(workflows)
library(modeldata)
library(recipes)
library(parsnip)
library(dplyr)
library(rsample)
library(tune)
library(yardstick)
# ------------------------------------------------------------------------------
data(cells)
cells <- cells %>% dplyr::select(-case)
set.seed(1)
val_set <- validation_split(cells)
# ------------------------------------------------------------------------------
basic_recipe <-
recipe(class ~ ., data = cells) %>%
step_YeoJohnson(all_predictors()) %>%
step_normalize(all_predictors())
pca_recipe <-
basic_recipe %>%
step_pca(all_predictors(), num_comp = tune())
ss_recipe <-
basic_recipe %>%
step_spatialsign(all_predictors())
# ------------------------------------------------------------------------------
knn_mod <-
nearest_neighbor(neighbors = tune(), weight_func = tune()) %>%
set_engine("kknn") %>%
set_mode("classification")
lr_mod <-
logistic_reg() %>%
set_engine("glm")
# ------------------------------------------------------------------------------
preproc <- list(none = basic_recipe, pca = pca_recipe, sp_sign = ss_recipe)
models <- list(knn = knn_mod, logistic = lr_mod)
cell_set <- workflow_set(preproc, models, cross = TRUE)
cell_set
# ------------------------------------------------------------------------------
# Using variables and formulas
# Select predictors by their names
channels <- paste0("ch_", 1:4)
preproc <- purrr::map(channels, ~ workflow_variables(class, c(contains(!!.x))))
names(preproc) <- channels
preproc$everything <- class ~ .
preproc
cell_set_by_group <- workflow_set(preproc, models["logistic"])
cell_set_by_group
}
Run the code above in your browser using DataLab