MLR не регистрирует ученика в работе RStudio
У меня есть mlr
конвейер, который требует специального ученика, который я построил. Я определил все необходимые функции и после их запуска я могу использовать ученика. Тем не менее, когда я запускаю скрипт как отдельную работу в новой версии RStudio, mlr
похоже, не регистрирует нового ученика. Есть идеи? Пример сценария ниже.
Когда я запускаю его в интерактивном режиме, я получаю это:
library(mlr)
#> Warning: package 'mlr' was built under R version 3.4.4
#> Loading required package: ParamHelpers
#> Warning: package 'ParamHelpers' was built under R version 3.4.4
#> Warning: replacing previous import 'BBmisc::isFALSE' by
#> 'backports::isFALSE' when loading 'ParamHelpers'
## Define functions for regr.ma
makeRLearner.regr.ma <- function() {
makeRLearnerRegr(
cl = "regr.ma",
package = "fg",
par.set = makeParamSet(
makeDiscreteLearnerParam(id = "method", default = "mean", values = c("mean", "median")),
makeIntegerLearnerParam(id = "nskip", default = 0L, lower = 0L),
makeIntegerLearnerParam(id = "window_length", default = 1L, lower = 1L, upper = Inf)
),
properties = c("numerics", "factors", "ordered", "missings", "functionals"),
name = "Featureless regression + possibility to ignore a few observations XX",
short.name = "ma"
)
}
trainLearner.regr.ma <- function(.learner, .task, .subset, .weights = NULL, method = "mean", nskip = 0L, window_length = 1L, ...) {
y = getTaskTargets(.task)
if (!is.null(.subset)) {
y = y[.subset]
}
if (is.null(window_length)) window_length <- length(y) - nskip
stopifnot(nskip >= 0 && window_length >= 1)
stopifnot(nskip + window_length <= length(y))
ix <- (length(y) - nskip - window_length + 1):(length(y) - nskip)
# cat(ix)
if (method == "mean") {
response = mean(y[ix])
} else if (method == "median") {
response = median(y[ix])
}
list(response = response)
}
predictLearner.regr.ma <- function(.learner, .model, .newdata, ...) {
# extract some shortcuts
n = nrow(.newdata)
mod = getLearnerModel(.model)
return(rep(mod$response, n))
}
## Try it out
x <- makeLearner('regr.ma')
x
#> Learner regr.ma from package fg
#> Type: regr
#> Name: Featureless regression + possibility to ignore a few observations XX; Short name: ma
#> Class: regr.ma
#> Properties: numerics,factors,ordered,missings,functionals
#> Predict-Type: response
#> Hyperparameters:
Создано 2019-02-01 пакетом представлением (v0.2.0).
Однако, если я запускаю это как работу, я получаю это: