Nothing
test_that("learner is hotstarted when the hotstart parameter is increased", {
task = tsk("pima")
learner_1 = lrn("classif.debug", iter = 1)
learner_1$train(task)
id = learner_1$model$id
learner = lrn("classif.debug", iter = 2)
hot = HotstartStack$new(list(learner_1))
learner$hotstart_stack = hot
learner$train(task)
expect_equal(learner$model$id, id)
expect_equal(learner$model$iter, 2)
expect_equal(learner$param_set$values$iter, 2)
})
test_that("learner is directly returned when hotstart and target learner are equal", {
task = tsk("pima")
learner_1 = lrn("classif.debug", iter = 1)
learner_1$train(task)
id = learner_1$model$id
learner = lrn("classif.debug", iter = 1)
hot = HotstartStack$new(list(learner_1))
learner$hotstart_stack = hot
learner$train(task)
expect_equal(learner$model$id, id)
})
test_that("learner is trained when target learner has an additional non-hotstart parameter", {
task = tsk("pima")
learner_1 = lrn("classif.debug", iter = 1)
learner_1$train(task)
id = learner_1$model$id
learner = lrn("classif.debug", iter = 2, x = 1)
hot = HotstartStack$new(list(learner_1))
learner$hotstart_stack = hot
learner$train(task)
expect_true(learner$model$id != id)
expect_equal(learner$param_set$values$x, 1)
expect_equal(learner$param_set$values$iter, 2)
expect_equal(learner$model$iter, 2)
})
test_that("learner is trained when target learner has an additional hotstart parameter", {
task = tsk("pima")
learner_1 = lrn("classif.debug", x = 0)
learner_1$train(task)
learner_1$state$param_vals$iter = NULL # iter set by default. Assume it is not.
id = learner_1$model$id
learner = lrn("classif.debug", iter = 5)
hot = HotstartStack$new(list(learner_1))
learner$hotstart_stack = hot
learner$train(task)
expect_true(learner$model$id != id)
})
test_that("learner is trained when target learner has an increased hotstart parameter and additional non-hotstart parameter", {
task = tsk("pima")
learner_1 = lrn("classif.debug", iter = 1)
learner_1$train(task)
id = learner_1$model$id
learner = lrn("classif.debug", iter = 2, x = 1)
hot = HotstartStack$new(list(learner_1))
learner$hotstart_stack = hot
learner$train(task)
expect_true(learner$model$id != id)
})
test_that("learner is trained when the hotstart parameter of the target and hotstart learner are equal but the non-hotstart parameter is changed", {
task = tsk("pima")
learner_1 = lrn("classif.debug", iter = 1, x = 0)
learner_1$train(task)
id = learner_1$model$id
learner = lrn("classif.debug", iter = 1, x = 1)
hot = HotstartStack$new(list(learner_1))
learner$hotstart_stack = hot
learner$train(task)
expect_true(learner$model$id != id)
})
test_that("learner is hotstarted when the non-hotstart parameter of the target and hotstart learner are equal but the hotstart parameter is increased", {
task = tsk("pima")
learner_1 = lrn("classif.debug", iter = 1, x = 0)
learner_1$train(task)
id = learner_1$model$id
learner = lrn("classif.debug", iter = 2, x = 0)
hot = HotstartStack$new(list(learner_1))
learner$hotstart_stack = hot
learner$train(task)
expect_equal(learner$model$id, id)
})
test_that("learner is trained when the task is different", {
task = tsk("pima")
learner_1 = lrn("classif.debug", iter = 1)
learner_1$train(task)
id = learner_1$model$id
learner = lrn("classif.debug", iter = 2)
hot = HotstartStack$new(list(learner_1))
learner$hotstart_stack = hot
learner$train(tsk("iris"))
expect_true(learner$model$id != id)
})
test_that("learner is trained when the stack is empty", {
task = tsk("pima")
learner = lrn("classif.debug", iter = 2)
learner$hotstart_stack = HotstartStack$new()
learner$train(tsk("iris"))
expect_class(learner$model, "classif.debug_model")
})
test_that("learners are hotstarted when resample is used", {
task = tsk("pima")
learner_1 = lrn("classif.debug", iter = 1)
resampling = rsmp("cv", folds = 3)
resampling$instantiate(task)
rr = resample(task, learner_1, resampling, store_models = TRUE)
learner = lrn("classif.debug", iter = 2)
hot = HotstartStack$new(rr$learners)
learner$hotstart_stack = hot
rr_2 = resample(task, learner, resampling, store_models = TRUE, allow_hotstart = TRUE)
pmap(list(rr$learners, rr_2$learners), function(l1, l2) {
expect_equal(l2$param_set$values$iter, 2)
expect_class(l2$model, "classif.debug_model")
expect_equal(l2$model$iter, 2)
expect_equal(l1$model$id, l2$model$id)
expect_null(l2$hotstart_stack)
})
})
test_that("learners are hotstarted when benchmark is called", {
task = tsk("pima")
learner_1 = lrn("classif.debug", iter = 1)
learner_2 = lrn("classif.debug", iter = 2)
resampling = rsmp("cv", folds = 3)
resampling$instantiate(task)
design = benchmark_grid(task, list(learner_1, learner_2), resampling)
bmr = benchmark(design, store_models = TRUE)
learners = unlist(map(seq_len(bmr$n_resample_results), function(i) bmr$resample_result(i)$learners))
hot = HotstartStack$new(learners)
ids = map_chr(learners, function(l) l$model$id)
learner = lrn("classif.debug", iter = 3)
learner$hotstart_stack = hot
design = benchmark_grid(task, learner, resampling)
bmr_2 = benchmark(design, store_models = TRUE, allow_hotstart = TRUE)
walk(bmr_2$resample_result(1)$learners, function(l1) {
expect_equal(l1$param_set$values$iter, 3)
expect_class(l1$model, "classif.debug_model")
expect_equal(l1$model$iter, 3)
expect_true(l1$model$id %in% ids)
expect_null(l1$hotstart_stack)
})
})
test_that("learners are trained and hotstarted when benchmark is called", {
task = tsk("pima")
learner_1 = lrn("classif.debug", iter = 1)
learner_2 = lrn("classif.debug", iter = 2)
resampling = rsmp("cv", folds = 3)
resampling$instantiate(task)
design = benchmark_grid(task, list(learner_1, learner_2), resampling)
bmr = benchmark(design, store_models = TRUE)
learners = unlist(map(seq_len(bmr$n_resample_results), function(i) bmr$resample_result(i)$learners))
hot = HotstartStack$new(learners)
ids = map_chr(learners, function(l) l$model$id)
learner_3 = lrn("classif.debug", iter = 4)
learner_3$hotstart_stack = hot
learner_4 = lrn("classif.rpart")
learner_4$hotstart_stack = hot
design = benchmark_grid(task, list(learner_3, learner_4), resampling)
bmr_2 = benchmark(design, store_models = TRUE, allow_hotstart = TRUE)
walk(bmr_2$resample_result(1)$learners, function(l1) {
expect_equal(l1$param_set$values$iter, 4)
expect_class(l1$model, "classif.debug_model")
expect_equal(l1$model$iter, 4)
expect_true(l1$model$id %in% ids[4:6])
expect_null(l1$hotstart_stack)
})
walk(bmr_2$resample_result(2)$learners, function(l1) {
expect_class(l1$model, "rpart")
expect_null(l1$hotstart_stack)
})
})
test_that("learners are cloned when hotstarting is applied", {
task = tsk("pima")
learner_1 = lrn("classif.debug", iter = 1)
resampling = rsmp("holdout")
resampling$instantiate(task)
design = benchmark_grid(task, learner_1, resampling)
bmr = benchmark(design, store_models = TRUE, allow_hotstart = TRUE)
learner_2 = lrn("classif.debug", iter = 2)
hot = HotstartStack$new(bmr$resample_result(1)$learners)
learner_2$hotstart_stack = hot
design = benchmark_grid(task, learner_2, resampling)
bmr = benchmark(design, store_models = TRUE, allow_hotstart = TRUE)
expect_equal(bmr$resample_result(1)$learners[[1]]$param_set$values$iter, 2)
expect_equal(bmr$resample_result(1)$learners[[1]]$model$iter, 2)
expect_equal(hot$stack$start_learner[[1]]$param_set$values$iter, 1)
expect_equal(hot$stack$start_learner[[1]]$model$iter, 1)
expect_equal(bmr$resample_result(1)$learners[[1]]$model$id,
hot$stack$start_learner[[1]]$model$id)
})
test_that("hotstarting works when col role is set in task", {
task = tsk("pima")
task$col_roles$stratum = task$target_names
learner_1 = lrn("classif.debug", iter = 1)
resampling = rsmp("holdout")
resampling$instantiate(task)
rr = resample(task, learner_1, resampling, store_models = TRUE)
learner = lrn("classif.debug", iter = 2)
hot = HotstartStack$new(rr$learners)
learner$hotstart_stack = hot
rr_2 = resample(task, learner, resampling, store_models = TRUE, allow_hotstart = TRUE)
pwalk(list(rr$learners, rr_2$learners), function(l1, l2) {
expect_equal(l2$param_set$values$iter, 2)
expect_class(l2$model, "classif.debug_model")
expect_equal(l2$model$iter, 2)
expect_equal(l1$model$id, l2$model$id)
expect_null(l2$hotstart_stack)
})
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.