File: extractFDAFeaturesWrapper.R

package info (click to toggle)
r-cran-mlr 2.19.2%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 8,264 kB
  • sloc: ansic: 65; sh: 13; makefile: 5
file content (42 lines) | stat: -rw-r--r-- 1,445 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#' @title Fuse learner with an extractFDAFeatures method.
#'
#' @description
#' Fuses a base learner with an extractFDAFeatures method. Creates a learner object, which can be
#' used like any other learner object.
#' Internally uses [extractFDAFeatures] before training the learner and
#' [reextractFDAFeatures] before predicting.
#'
#' @template arg_learner
#' @inheritParams extractFDAFeatures
#' @export
#' @family fda
#' @family wrapper
#' @template ret_learner
makeExtractFDAFeatsWrapper = function(learner, feat.methods = list()) {

  assertList(feat.methods, names = "named")

  learner = checkLearner(learner)
  args = list(feat.methods = feat.methods)
  rm(list = names(args))

  trainfun = function(data, target, args) {
    lst = do.call(extractFDAFeatures, c(list(obj = data, target = target), args))
    names(lst) = c("data", "control")
    return(lst)
  }

  predictfun = function(data, target, args, control) {
    reextractFDAFeatures(data, control)
  }
  ps = do.call("c", extractSubList(args$feat.methods, "par.set", simplify = FALSE))

  lrn = makePreprocWrapper(learner, trainfun, predictfun, par.vals = args, par.set = ps)
  lrn$id = stri_replace(lrn$id, replacement = ".extracted", regex = "[.]preproc$")
  addClasses(lrn, "extractFDAFeatsWrapper")
}

#' @export
getLearnerProperties.extractFDAFeatsWrapper = function(learner) {
  union(getLearnerProperties(learner$next.learner), c("functionals", "single.functional"))
}