fit_xy() 在 Tidy 模型中用于 cross_validation
fit_xy() usage for cross_validation in Tidy Models
我是 Tidy Models 的新手,到目前为止我很喜欢它,但对 resampling/cross-validation 使用非公式界面有疑问。到目前为止我理解的方式,为了让我应用重采样()/交叉验证,我应该写一个
- 配方公式:结果 ~ 预测因素
rf_rec <-
recipe(y_graduated ~ .,
data = trainDat_predSet)
- 指定型号
# Setting Random Forest Model Specifications
rf_model <-
rand_forest() %>%
set_engine("ranger") %>%
set_mode("classification") %>%
set_args(mtry = 3,
trees = 50,
min_n = 5)
- 创建折叠
set.seed(1234)
trainDatFolds <-
rsample::vfold_cv(data = trainDat, v = 5)
- 将配方和模型规范放入工作流程
rf_workflow <-
workflow() %>%
add_recipe(rf_rec) %>%
add_model(rf_model)
- 然后拟合重采样。
rf_workflow %>%
fit_resamples(resamples = trainDatFolds,
metrics = metric_set(roc_auc, pr_auc, accuracy),
control = control_resamples(save_pred = TRUE)
)
就我的目的而言,能够使用结果 ~ 预测变量的非公式界面要方便得多。
没有配方步骤,如果我正在做重采样拟合,我可以很容易地使用这个函数 -
fit_xy() 指定 y - 结果和 x - 预测变量集。
这是重采样拟合的选项吗?
非常感谢!
没有 x/y 界面,但是没有公式的简单方法:
library(recipes)
rec <- recipe(mtcars)
summary(rec)
#> # A tibble: 11 x 4
#> variable type role source
#> <chr> <chr> <lgl> <chr>
#> 1 mpg numeric NA original
#> 2 cyl numeric NA original
#> 3 disp numeric NA original
#> 4 hp numeric NA original
#> 5 drat numeric NA original
#> 6 wt numeric NA original
#> 7 qsec numeric NA original
#> 8 vs numeric NA original
#> 9 am numeric NA original
#> 10 gear numeric NA original
#> 11 carb numeric NA original
# now add roles
rec <-
rec %>%
update_role(mpg, new_role = "outcome") %>%
update_role(-mpg, new_role = "predictor")
summary(rec)
#> # A tibble: 11 x 4
#> variable type role source
#> <chr> <chr> <chr> <chr>
#> 1 mpg numeric outcome original
#> 2 cyl numeric predictor original
#> 3 disp numeric predictor original
#> 4 hp numeric predictor original
#> 5 drat numeric predictor original
#> 6 wt numeric predictor original
#> 7 qsec numeric predictor original
#> 8 vs numeric predictor original
#> 9 am numeric predictor original
#> 10 gear numeric predictor original
#> 11 carb numeric predictor original
由 reprex package (v0.3.0)
于 2020-11-06 创建
我是 Tidy Models 的新手,到目前为止我很喜欢它,但对 resampling/cross-validation 使用非公式界面有疑问。到目前为止我理解的方式,为了让我应用重采样()/交叉验证,我应该写一个
- 配方公式:结果 ~ 预测因素
rf_rec <-
recipe(y_graduated ~ .,
data = trainDat_predSet)
- 指定型号
# Setting Random Forest Model Specifications
rf_model <-
rand_forest() %>%
set_engine("ranger") %>%
set_mode("classification") %>%
set_args(mtry = 3,
trees = 50,
min_n = 5)
- 创建折叠
set.seed(1234)
trainDatFolds <-
rsample::vfold_cv(data = trainDat, v = 5)
- 将配方和模型规范放入工作流程
rf_workflow <-
workflow() %>%
add_recipe(rf_rec) %>%
add_model(rf_model)
- 然后拟合重采样。
rf_workflow %>%
fit_resamples(resamples = trainDatFolds,
metrics = metric_set(roc_auc, pr_auc, accuracy),
control = control_resamples(save_pred = TRUE)
)
就我的目的而言,能够使用结果 ~ 预测变量的非公式界面要方便得多。
没有配方步骤,如果我正在做重采样拟合,我可以很容易地使用这个函数 - fit_xy() 指定 y - 结果和 x - 预测变量集。
这是重采样拟合的选项吗?
非常感谢!
没有 x/y 界面,但是没有公式的简单方法:
library(recipes)
rec <- recipe(mtcars)
summary(rec)
#> # A tibble: 11 x 4
#> variable type role source
#> <chr> <chr> <lgl> <chr>
#> 1 mpg numeric NA original
#> 2 cyl numeric NA original
#> 3 disp numeric NA original
#> 4 hp numeric NA original
#> 5 drat numeric NA original
#> 6 wt numeric NA original
#> 7 qsec numeric NA original
#> 8 vs numeric NA original
#> 9 am numeric NA original
#> 10 gear numeric NA original
#> 11 carb numeric NA original
# now add roles
rec <-
rec %>%
update_role(mpg, new_role = "outcome") %>%
update_role(-mpg, new_role = "predictor")
summary(rec)
#> # A tibble: 11 x 4
#> variable type role source
#> <chr> <chr> <chr> <chr>
#> 1 mpg numeric outcome original
#> 2 cyl numeric predictor original
#> 3 disp numeric predictor original
#> 4 hp numeric predictor original
#> 5 drat numeric predictor original
#> 6 wt numeric predictor original
#> 7 qsec numeric predictor original
#> 8 vs numeric predictor original
#> 9 am numeric predictor original
#> 10 gear numeric predictor original
#> 11 carb numeric predictor original
由 reprex package (v0.3.0)
于 2020-11-06 创建