FeatureObject function

Create a Feature Object

Create a Feature Object

Create a FeatureObject, which will be used as input for all the feature computations.

createFeatureObject( init, X, y, fun, minimize, lower, upper, blocks, objective, force = FALSE )

Arguments

  • init: [data.frame]

    A data.frame, which can be used as initial design. If not provided, it will be created either based on the initial sample X and the objective values y or X and the function definition fun.

  • X: [data.frame or matrix]

    A data.frame or matrix containing the initial sample. If not provided, it will be extracted from init.

  • y: [numeric or integer]

    A vector containing the objective values of the initial design. If not provided, it will be extracted from init.

  • fun: [function]

    A function, which allows the computation of the objective values. If it is not provided, features that require additional function evaluations, can't be computed.

  • minimize: [logical(1)]

    Should the objective function be minimized? The default is TRUE.

  • lower: [numeric or integer]

    The lower limits per dimension.

  • upper: [numeric or integer]

    The upper limits per dimension.

  • blocks: [integer]

    The number of blocks per dimension.

  • objective: [character(1)]

    The name of the feature, which contains the objective values. The default is "y".

  • force: [logical(1)]

    Only change this parameter IF YOU KNOW WHAT YOU ARE DOING! Per default (force = FALSE), the function checks whether the total number of cells that you are trying to generate, is below the (hard-coded) internal maximum of 25,000 cells. If you set this parameter to TRUE, you agree that you want to exceed that internal limit.

    Note: Exploratory Landscape Analysis (ELA) is only useful when you are limited to a small budget (i.e., a small number of function evaluations) and in such scenarios, the number of cells should also be kept low!

Returns

[FeatureObject].

Examples

# (1a) create a feature object using X and y: X = createInitialSample(n.obs = 500, dim = 3, control = list(init_sample.lower = -10, init_sample.upper = 10)) y = apply(X, 1, function(x) sum(x^2)) feat.object1 = createFeatureObject(X = X, y = y, lower = -10, upper = 10, blocks = c(5, 10, 4)) # (1b) create a feature object using X and fun: feat.object2 = createFeatureObject(X = X, fun = function(x) sum(sin(x) * x^2), lower = -10, upper = 10, blocks = c(5, 10, 4)) # (1c) create a feature object using a data.frame: feat.object3 = createFeatureObject(iris[,-5], blocks = 5, objective = "Petal.Length") # (2) have a look at the feature objects: feat.object1 feat.object2 feat.object3 # (3) now, one could calculate features calculateFeatureSet(feat.object1, "ela_meta") calculateFeatureSet(feat.object2, "cm_grad") library(plyr) calculateFeatureSet(feat.object3, "cm_angle", control = list(cm_angle.show_warnings = FALSE))
  • Maintainer: Pascal Kerschke
  • License: BSD_2_clause + file LICENSE
  • Last published: 2020-03-31