如何在mlr3pipelines中设置图形学习器id



我在一个数据集上用4个图学习器构建了一个基准。基准测试结果的learner_id很长,因为我有一些预处理。我怎样才能设置学习者id,使其不会太长。这是我的代码:

# step 1 the task
all_plays <- readRDS("../000files/all_plays.rds")
pbp_task <- as_task_classif(all_plays, target="play_type")
split_task <- partition(pbp_task, ratio=0.75)
task_train <- pbp_task$clone()$filter(split_task$train)
task_test <- pbp_task$clone()$filter(split_task$test)
# step 2 the preprocess
pbp_prep <- po("select", 
selector = selector_invert(
selector_name(c("half_seconds_remaining","yards_gained","game_id")))
) %>>%
po("colapply", 
affect_columns = selector_name(c("posteam","defteam")),
applicator = as.factor) %>>% 
po("filter", 
filter = mlr3filters::flt("find_correlation"), filter.cutoff=0.3) %>>%
po("scale", scale = F) %>>% 
po("removeconstants")
# step 3 learners
rf_glr <- as_learner(pbp_prep %>>% lrn("classif.ranger", predict_type="prob")) 
log_glr <-as_learner(pbp_prep %>>% lrn("classif.log_reg", predict_type="prob")) 
tree_glr <- as_learner(pbp_prep %>>% lrn("classif.rpart", predict_type="prob")) 
kknn_glr <- as_learner(pbp_prep %>>% lrn("classif.kknn", predict_type="prob")) 
# step 4 benckmark grid
set.seed(0520)
cv <- rsmp("cv",folds=10)
design <- benchmark_grid(
tasks = task_train,
learners = list(rf_glr,log_glr,tree_glr,kknn_glr),
resampling = cv
)
# step 5 benchmark
bmr <- benchmark(design,store_models = T)
bmr
# learner_id toooo long...
<BenchmarkResult> of 40 rows with 4 resampling runs
nr   task_id                                                          learner_id resampling_id
1 all_plays select.colapply.find_correlation.scale.removeconstants.randomForest            cv
2 all_plays     select.colapply.find_correlation.scale.removeconstants.logistic            cv
3 all_plays select.colapply.find_correlation.scale.removeconstants.decisionTree            cv
4 all_plays         select.colapply.find_correlation.scale.removeconstants.kknn            cv
iters warnings errors
10        0      0
10        0      0
10        0      0
10        0      0

在这个结果中,learner_id太长,对autoplot(bmr)也不好。如何设置learner_id使其变短?非常感谢。

你可以做:

library(mlr3verse)
#> Loading required package: mlr3
learner = as_learner(po("pca") %>>% po("learner", lrn("regr.rpart")))
learner$id = "my_id"
print(learner)
#> <GraphLearner:my_id>
#> * Model: -
#> * Parameters: regr.rpart.xval=0
#> * Packages: mlr3, mlr3pipelines, rpart
#> * Predict Types:  [response], se, distr
#> * Feature Types: logical, integer, numeric, character, factor, ordered,
#>   POSIXct
#> * Properties: featureless, hotstart_backward, hotstart_forward,
#>   importance, loglik, missings, oob_error, selected_features, weights

创建于2022-07-22由reprex包(v2.0.1(

最新更新