Skip to contents

Impute numeric, integer, POSIXct or Date features by histogram.

During training, a histogram is fitted on each column using R's hist() function. The fitted histogram is then sampled from for imputation. Sampling happens in a two-step process: First, a bin is sampled from the histogram, then a value is sampled uniformly from the bin. This is an approximation to sampling from the empirical training data distribution (i.e. sampling from training data with replacement), but is much more memory efficient for large datasets, since the $state does not need to save the training data.

Format

R6Class object inheriting from PipeOpImpute/PipeOp.

Construction

PipeOpImputeHist$new(id = "imputehist", param_vals = list())

  • id :: character(1)
    Identifier of resulting object, default "imputehist".

  • param_vals :: named list
    List of hyperparameter settings, overwriting the hyperparameter settings that would otherwise be set during construction. Default list().

Input and Output Channels

Input and output channels are inherited from PipeOpImpute.

The output is the input Task with all affected numeric, integer, POSIXct or Date features missing values imputed by (column-wise) histogram; see Description for details.

State

The $state is a named list with the $state elements inherited from PipeOpImpute.

The $state$model is a named list of lists containing elements $counts and $breaks.

Parameters

The parameters are the parameters inherited from PipeOpImpute.

Internals

Uses the graphics::hist() function. Features that are entirely NA are imputed as 0.

Fields

Only fields inherited from PipeOp.

Methods

Only methods inherited from PipeOpImpute/PipeOp.

See also

https://mlr-org.com/pipeops.html

Other PipeOps: PipeOp, PipeOpEncodePL, PipeOpEnsemble, PipeOpImpute, PipeOpTargetTrafo, PipeOpTaskPreproc, PipeOpTaskPreprocSimple, mlr_pipeops, mlr_pipeops_adas, mlr_pipeops_blsmote, mlr_pipeops_boxcox, mlr_pipeops_branch, mlr_pipeops_chunk, mlr_pipeops_classbalancing, mlr_pipeops_classifavg, mlr_pipeops_classweights, mlr_pipeops_classweightsex, mlr_pipeops_colapply, mlr_pipeops_collapsefactors, mlr_pipeops_colroles, mlr_pipeops_copy, mlr_pipeops_datefeatures, mlr_pipeops_decode, mlr_pipeops_encode, mlr_pipeops_encodeimpact, mlr_pipeops_encodelmer, mlr_pipeops_encodeplquantiles, mlr_pipeops_encodepltree, mlr_pipeops_featureunion, mlr_pipeops_filter, mlr_pipeops_fixfactors, mlr_pipeops_histbin, mlr_pipeops_ica, mlr_pipeops_imputeconstant, mlr_pipeops_imputelearner, mlr_pipeops_imputemean, mlr_pipeops_imputemedian, mlr_pipeops_imputemode, mlr_pipeops_imputeoor, mlr_pipeops_imputesample, mlr_pipeops_info, mlr_pipeops_isomap, mlr_pipeops_kernelpca, mlr_pipeops_learner, mlr_pipeops_learner_pi_cvplus, mlr_pipeops_learner_quantiles, mlr_pipeops_materialize, mlr_pipeops_missind, mlr_pipeops_modelmatrix, mlr_pipeops_multiplicityexply, mlr_pipeops_multiplicityimply, mlr_pipeops_mutate, mlr_pipeops_nearmiss, mlr_pipeops_nmf, mlr_pipeops_nop, mlr_pipeops_ovrsplit, mlr_pipeops_ovrunite, mlr_pipeops_pca, mlr_pipeops_proxy, mlr_pipeops_quantilebin, mlr_pipeops_randomprojection, mlr_pipeops_randomresponse, mlr_pipeops_regravg, mlr_pipeops_removeconstants, mlr_pipeops_renamecolumns, mlr_pipeops_replicate, mlr_pipeops_rowapply, mlr_pipeops_scale, mlr_pipeops_scalemaxabs, mlr_pipeops_scalerange, mlr_pipeops_select, mlr_pipeops_smote, mlr_pipeops_smotenc, mlr_pipeops_spatialsign, mlr_pipeops_splines, mlr_pipeops_subsample, mlr_pipeops_targetinvert, mlr_pipeops_targetmutate, mlr_pipeops_targettrafoscalerange, mlr_pipeops_textvectorizer, mlr_pipeops_threshold, mlr_pipeops_tomek, mlr_pipeops_tunethreshold, mlr_pipeops_unbranch, mlr_pipeops_updatetarget, mlr_pipeops_vtreat, mlr_pipeops_yeojohnson

Other Imputation PipeOps: PipeOpImpute, mlr_pipeops_imputeconstant, mlr_pipeops_imputelearner, mlr_pipeops_imputemean, mlr_pipeops_imputemedian, mlr_pipeops_imputemode, mlr_pipeops_imputeoor, mlr_pipeops_imputesample

Examples

library("mlr3")

task = tsk("diabetes")
task$missings()
#> diabetes      age  glucose  insulin     mass pedigree pregnant pressure 
#>        0        0        5      405       13        0        0       35 
#>  triceps 
#>      251 

po = po("imputehist")
new_task = po$train(list(task = task))[[1]]
new_task$missings()
#> diabetes      age pedigree pregnant  glucose  insulin     mass pressure 
#>        0        0        0        0        0        0        0        0 
#>  triceps 
#>        0 

po$state$model
#> $age
#> $age$counts
#>  [1] 266 176  80  53  71  40  30  22  14  12   2   0   2
#> 
#> $age$breaks
#>  [1] 20 25 30 35 40 45 50 55 60 65 70 75 80 85
#> 
#> 
#> $glucose
#> $glucose$counts
#>  [1]   3   2  19  75  90  82 120 101  58  47  29  47  24  34  32
#> 
#> $glucose$breaks
#>  [1]  50  60  70  80  90 100 110 120 130 140 150 160 170 180 190 200
#> 
#> 
#> $insulin
#> $insulin$counts
#> [1] 132 150  44  12  12  12   0   0   1
#> 
#> $insulin$breaks
#>  [1]   0 100 200 300 400 500 600 700 800 900
#> 
#> 
#> $mass
#> $mass$counts
#> [1]  14  87 182 217 153  68  23   5   6
#> 
#> $mass$breaks
#>  [1] 15 20 25 30 35 40 45 50 55 60
#> 
#> 
#> $pedigree
#> $pedigree$counts
#>  [1] 139 280 139  98  62  17  17   2   7   0   1   3   3
#> 
#> $pedigree$breaks
#>  [1] 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 2.6
#> 
#> 
#> $pregnant
#> $pregnant$counts
#>  [1] 218  61 117  55  52  35  73  31  14  29  13   8  62
#> 
#> $pregnant$breaks
#>  [1]  0  1  2  3  4  5  6  7  8  9 10 11 12 13
#> 
#> 
#> $pressure
#> $pressure$counts
#> [1]   3   0  24  90 211 235 127  35   8
#> 
#> $pressure$breaks
#>  [1]  20  30  40  50  60  70  80  90 100 110
#> 
#> 
#> $triceps
#> $triceps$counts
#>  [1]   7  43  57  66 117  85  61  57  16   2   3   3
#> 
#> $triceps$breaks
#>  [1]  5 10 15 20 25 30 35 40 45 50 55 60 65
#> 
#>