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 featurescalculateFeatureSet(feat.object1,"ela_meta")calculateFeatureSet(feat.object2,"cm_grad")library(plyr)calculateFeatureSet(feat.object3,"cm_angle", control = list(cm_angle.show_warnings =FALSE))