Как я могу создать RLearner_regr_QRNN.R? - PullRequest
0 голосов
/ 15 октября 2019

Оригинальный вопрос

Я хотел бы создать нового ученика для нейронной сети с квантильной регрессией. Его нет в списках методов обучения, уже интегрированных с «млр». Его формат должен выглядеть следующим образом: «RLearner_regr_QRNN.R»

Добавлено после того, как ответ был принят

Я хотел бы определить «нейронную сеть квантильной регрессии» как новый тип ученика, обладающий особыми свойствамии не вписывается ни в одну из существующих схем. Мой код ниже. Код работает, но когда я использую его в качестве ученика для своих данных, он выдает ошибку, что «qrnn» не является экспортированным объектом из «namespace: qrnn». Я заранее благодарю вас и с нетерпением жду вашего ответа.

    makeRLearner.regr.qrnn = function() {
  makeRLearnerRegr(
    cl = "regr.qrnn",
    package = "qrnn",
    par.set = makeParamSet(
      makeIntegerLearnerParam(id = "n.hidden", default = 2L, lower = 1L),
      makeUntypedLearnerParam(id = "n.hidden2", default = NULL),
      makeUntypedLearnerParam(id = "w", default = NULL),
      makeNumericVectorLearnerParam(id = "tau",  default = c(0.1, 0.5, 0.9)),
      makeIntegerLearnerParam(id = "iter.max", default = 5000L),
      makeIntegerLearnerParam(id = "n.trials", default = 5L),
      makeNumericLearnerParam(id = "lower", default = 0),
      makeNumericVectorLearnerParam(id = "init.range", default = c(-0.5, 0.5, -0.5, 0.5, -0.5, 0.5)),
      makeUntypedLearnerParam(id = "monotone", default = NULL),
      makeNumericVectorLearnerParam(id = "eps.seq", default =c(2^(-8),2^(-12),2^(-16),2^(-20),2^(-24),2^(-28),2^(-32))),
      makeDiscreteLearnerParam(id = "Th", values =c("sigmoid", "elu", "softplus"),default = "sigmoid"),
      makeDiscreteLearnerParam(id = "Th.prime", values=c("sigmoid.prime", "elu.prime","softplus.prime", default = "sigmoid.prime")),
      makeNumericLearnerParam(id = "penalty", default = 0),
      makeIntegerLearnerParam(id = "n.errors.max", default = 10),
      makeLogicalLearnerParam(id = "trace", default = TRUE),
      makeDiscreteLearnerParam(id = "method", values =c("nlm","adam"), default = "nlm")
    ),
    par.vals = list(n.hidden=5L, penalty=0),
    properties = c("numerics", "factors", "ordered", "oobpreds", "featimp", "se", "weights"),
    name = "QRNN",
    short.name = "qrnn",
    callees = "qrnn"
  )
}

#' @export
trainLearner.regr.qrnn = function(.learner, .task, .subset, .weights = NULL, ...) {
  if (is.null(.weights)) {
    f = getTaskFormula(.task)
    qrnn::qrnn(f, data = getTaskData(.task, .subset), linout = TRUE, ...)
  } else {
    f = getTaskFormula(.task)
    qrnn::qrnn(f, data = getTaskData(.task, .subset), linout = TRUE, weights = .weights, ...)
  }
}

#' @export
predictLearner.regr.qrnn = function(.learner, .model, .newdata, ...) {
  predict(.model$learner.model, newdata = .newdata, ...)[, 1L]
}

1 Ответ

1 голос
/ 15 октября 2019

Инструкции по созданию настраиваемого ученика можно найти на нашем веб-сайте .

Также вы можете подумать над созданием этого ученика для нового млр3 * 1006. * пакет вместо. Инструкции здесь .

...