Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Package: mlr3
Title: Machine Learning in R - Next Generation
Version: 1.2.0.9000
Version: 1.3.0
Authors@R:
c(
person("Michel", "Lang", , "[email protected]", role = "aut",
Expand Down
12 changes: 11 additions & 1 deletion NEWS.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
# mlr3 (development version)
# mlr3 1.3.0

* feat: `Learner$predict()` can now add additional data to `PredictionClassif` and `PredictionRegr` objects via the `extra` field.
* feat: `Mlr3Error` and `Mlr3Warning` classes for errors and warnings.
* refactor: `$obs_loss` methods in `Measure`, `Prediction`, `ResampleResult`, and `BenchmarkResult`.
* perf: Use more `lengths()` and `data.table::setattr()` in tests.
* perf: Use `attr()` instead of `attributes()` for extracting single attributes.
* test: Use more specialised test functions.
* fix: `weights_measure` now work with `stratum`.
* fix: Encapsulation loads loaded packages on the workers.
* fix: Learners can handle new factor levels.
* refactor: Use more implicit returns.
* feat: Learner can pass extra data to predictions.

# mlr3 1.2.0

Expand Down
39 changes: 15 additions & 24 deletions tests/testthat/test_Measure.R
Original file line number Diff line number Diff line change
Expand Up @@ -275,38 +275,29 @@ test_that("measure weights", {

})




test_that("primary iters are respected", {
task = tsk("sonar")
resampling = rsmp("cv")$instantiate(task)
train_sets = map(1:10, function(i) resampling$train_set(i))
test_sets = map(1:10, function(i) resampling$train_set(i))
r1 = rsmp("custom")$instantiate(task, train_sets = train_sets, test_sets = test_sets)
get_private(r1, ".primary_iters") = 1:2
r2 = rsmp("custom")$instantiate(task, train_sets = train_sets[1:2], test_sets = test_sets[1:2])
r3 = rsmp("custom")$instantiate(task, train_sets = train_sets, test_sets = test_sets)

learner = lrn("classif.rpart", predict_type = "prob")
resampling = rsmp("cv", folds = 10)
resampling$instantiate(task)
get_private(resampling, ".primary_iters") = 1:2

rr1 = resample(task, learner, r1, store_models = TRUE)
rr2 = resample(task, learner, r2, store_models = TRUE)
rr3 = resample(task, learner, r3, store_models = TRUE)

rr = resample(task, learner, resampling)
m = msr("classif.acc")
m$average = "macro"
expect_equal(rr1$aggregate(), rr2$aggregate())
m$average = "micro"
expect_equal(rr1$aggregate(), rr2$aggregate())
scores = rr$score(m)$classif.acc

# macro aggregation
expect_equal(unname(rr$aggregate(m)), mean(scores[1:2]))
expect_true(unname(rr$aggregate(m)) != mean(scores))

# micro aggregation
pred_micro = do.call(c, rr$predictions()[1:2])
scores = pred_micro$score(m)
expect_equal(unname(m$score(pred_micro)), unname(scores))

jaccard = msr("sim.jaccard")
expect_error(rr1$aggregate(jaccard), "primary_iters")
expect_no_error(rr2$aggregate(jaccard))
jaccard$properties = c(jaccard$properties, "primary_iters")
x1 = rr1$aggregate(jaccard)
x2 = rr3$aggregate(jaccard)
expect_equal(x1, x2)
expect_error(rr$aggregate(jaccard), "primary_iters")
})

test_that("no predict_sets required (#1094)", {
Expand Down
Loading