MLR не регистрирует ученика в работе RStudio - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть 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).

Однако, если я запускаю его как задание, я получаю это:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...