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.

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 neccessary 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.

See also

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