FOR INTERNAL USE IN MLR3ORDINAL ONLY! EXPERIMENTAL, API SUBJECT TO CHANGE
Handles target transformation operations that do not need explicit inversion.
In case the new target is required during predict, creates a vector of NA
.
Works similar to PipeOpTargetTrafo
and
PipeOpTargetMutate
, but forgoes the
inversion step.
In case target after the trafo
is a factor, levels are saved to $state
.
During prediction: Sets all target values to NA
before calling the trafo
again.
In case target after the trafo
is a factor, levels saved in the state
are
set during prediction.
As a special case when trafo
is identity
and new_target_name
matches an existing column
name of the data of the input Task
, this column is set as the new target. Depending on
drop_original_target
the original target is then either dropped or added to the features.
Abstract R6Class
inheriting from PipeOp
.
PipeOpUpdateTarget$new(id, param_set = ParamSet$new(), param_vals = list(), packages = character(0))
id
:: character(1)
Identifier of resulting object. See $id
slot of PipeOp
.
param_vals
:: named list
List of hyperparameter settings, overwriting the hyperparameter settings given in param_set
.
The subclass should have its own param_vals
parameter and pass it on to super$initialize()
.
Default list()
.
The parameters are the parameters inherited from PipeOpTargetTrafo
, as well as:
trafo
:: function
Transformation function for the target. Should only be a function of the target, i.e., taking a
single argument. Default is identity
.
Note, that the data passed on to the target is a data.table
consisting of all target column.
new_target_name
:: character(1)
Optionally give the transformed target a new name. By default the original name is used.
new_task_type
:: character(1)
Optionally a new task type can be set. Legal types are listed in
mlr_reflections$task_types$type
.
#' drop_original_target
:: logical(1)
Whether to drop the original target column. Default: TRUE
.
The $state
is a list of class levels for each target after trafo.
list()
if none of the targets have levels.
Only methods inherited from PipeOp
.
Other PipeOps:
mlr_pipeop_ordinalclassif
,
mlr_pipeop_ordinalregr
if (FALSE) { # Create a binary class task from iris library(mlr3) trafo_fun = function(x) {factor(ifelse(x$Species == "setosa", "setosa", "other"))} po = PipeOpUpdateTarget$new(param_vals = list(trafo = trafo_fun, new_target_name = "setosa")) po$train(list(tsk("iris"))) po$predict(list(tsk("iris"))) }