Generates a more balanced data set by creating
synthetic instances of the minority class using the SMOTE algorithm.
The algorithm samples for each minority instance a new data point based on the
neighbors of that data point.
It can only be applied to tasks with numeric features.
smotefamily::SMOTE for details.
PipeOpSmote$new(id = "smote", param_vals = list())
Identifier of resulting object, default
param_vals :: named
List of hyperparameter settings, overwriting the hyperparameter settings that would otherwise be set during construction. Default
Input and output channels are inherited from
The output during training is the input
Task with added synthetic rows for the minority class.
The output during prediction is the unchanged input.
$state is a named
list with the
$state elements inherited from
The parameters are the parameters inherited from
PipeOpTaskPreproc, as well as:
The number of nearest neighbors used for sampling new values. See
Desired times of synthetic minority instances over the original number of majority instances. See
For details see:
Chawla, N., Bowyer, K., Hall, L. and Kegelmeyer, W. 2002.
SMOTE: Synthetic minority oversampling technique.
Journal of Artificial Intelligence Research. 16, 321-357.
library("mlr3") # Create example task data_example = smotefamily::sample_generator(1000, ratio = 0.80)#> Error in loadNamespace(name): there is no package called ‘smotefamily’task = TaskClassif$new(id = "example", backend = data_example, target = "result")#> Error in inherits(backend, "DataBackend"): object 'data_example' not foundtask$data()#> Error in eval(expr, envir, enclos): object 'task' not found#> Error in table(task$data()$result): object 'task' not found# Generate synthetic data for minority class pop = po("smote") smotedata = pop$train(list(task))[]$data()#> Error: The following packages could not be loaded: smotefamilytable(smotedata$result)#> Error in table(smotedata$result): object 'smotedata' not found