tests/testthat/test_LearnerMultioutput.R

context("test_LearnerMultioutput")

test_that("predict on newdata works / multiout", {
  task = tsk("linnerud")$filter(1:10)
  learner = lrn("multioutput.featureless")
  expect_error(learner$predict(task), "trained")
  learner$train(task)
  expect_task(learner$state$train_task)
  newdata = tsk("linnerud")$filter(11:21)$data()

  # passing the task
  p = learner$predict_newdata(newdata = newdata, task = task)
  expect_data_table(as.data.table(p), nrows = 10)
  expect_set_equal(as.data.table(p)$row_id, 1:10)
  expect_null(p$truth)

  # rely on internally stored task representation
  p = learner$predict_newdata(newdata = newdata, task = NULL)
  expect_data_table(as.data.table(p), nrows = 10)
  expect_set_equal(as.data.table(p)$row_id, 1:10)
  expect_null(p$truth)
})

test_that("reset()", {
  task = tsk("linnerud")
  lrn = lrn("multioutput.featureless")

  lrn$train(task)
  expect_list(lrn$state, names = "unique")
  expect_learner(lrn$reset())
  expect_null(lrn$state)
})

test_that("empty predict set (#421)", {
  task = tsk("linnerud")
  learner = lrn("multioutput.featureless")
  resampling = rsmp("holdout", ratio = 1)
  hout = resampling$instantiate(task)
  model = learner$train(task, hout$train_set(1))
  prd = learner$predict(task, hout$test_set(1))
  expect_true(any(grepl("No data to predict on", learner$log$msg)))
})
mlr-org/mlr3multioutput documentation built on Nov. 22, 2020, 1:17 p.m.