Skip to contents

Extract non-functional features from functional features using various methods.

The function extractFDAFeatures performs the extraction for all functional features via the methods specified in feat.methods and transforms all mentioned functional (matrix) features into regular data.frame columns. Additionally, a “extractFDAFeatDesc” object which contains learned coefficients and other helpful data for re-extraction during the predict-phase is returned. This can be used with reextractFDAFeatures in order to extract features during the prediction phase.

Usage

extractFDAFeatures(obj, target = character(0L), feat.methods = list(), ...)

Arguments

obj

(Task | data.frame)
Task or data.frame to extract functional features from. Must contain functional features as matrix columns.

target

(character(1))
Task target column. Only necessary for data.frames Default is character(0).

feat.methods

(named list)
List of functional features along with the desired methods for each functional feature. “all” applies the extractFDAFeatures method to each functional feature. Names of feat.methods must match column names of functional features. Available feature extraction methods are available under family fda_featextractor. Specifying a functional feature multiple times with different extraction methods allows for the extraction of different features from the same functional. Default is list() which does nothing.

...

(any)
Further hyperparameters passed on to the feat.methods specified above.

Value

(list)

  • data | task (data.frame | Task): Extracted features, same type as obj.

  • desc (extracFDAFeatDesc): Description object. See description for details.

Details

The description object contains these slots:

  • target (character): See argument.

  • coln (character): Colum names of data.

  • fd.cols (character): Functional feature names.

  • extractFDAFeat (list): Contains feature.methods and relevant parameters for reextraction.

Examples

df = data.frame(x = matrix(rnorm(24), ncol = 8), y = factor(c("a", "a", "b")))
fdf = makeFunctionalData(df, fd.features = list(x1 = 1:4, x2 = 5:8), exclude.cols = "y")
task = makeClassifTask(data = fdf, target = "y")
extracted = extractFDAFeatures(task,
  feat.methods = list("x1" = extractFDAFourier(), "x2" = extractFDAWavelets(filter = "haar")))
print(extracted$task)
#> Supervised task: fdf
#> Type: classif
#> Target: y
#> Observations: 3
#> Features:
#>    numerics     factors     ordered functionals 
#>           8           0           0           0 
#> Missings: FALSE
#> Has weights: FALSE
#> Has blocking: FALSE
#> Has coordinates: FALSE
#> Classes: 2
#> a b 
#> 2 1 
#> Positive class: a
reextractFDAFeatures(task, extracted$desc)
#> Supervised task: fdf
#> Type: classif
#> Target: y
#> Observations: 3
#> Features:
#>    numerics     factors     ordered functionals 
#>           8           0           0           0 
#> Missings: FALSE
#> Has weights: FALSE
#> Has blocking: FALSE
#> Has coordinates: FALSE
#> Classes: 2
#> a b 
#> 2 1 
#> Positive class: a