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.
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 ischaracter(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 offeat.methods
must match column names of functional features. Available feature extraction methods are available under familyfda_featextractor
. Specifying a functional feature multiple times with different extraction methods allows for the extraction of different features from the same functional. Default islist()
which does nothing.- ...
(any)
Further hyperparameters passed on to thefeat.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
): Containsfeature.methods
and relevant parameters for reextraction.
See also
Other fda:
makeExtractFDAFeatMethod()
,
makeExtractFDAFeatsWrapper()
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