Information gain filter calling
FSelectorRcpp::relief() in package FSelectorRcpp.
Note
This filter can handle missing values in the features. However, the resulting filter scores may be misleading or at least difficult to compare if some features have a large proportion of missing values.
If a feature has no non-missing observation, the resulting score will be (close to) 0.
See also
PipeOpFilter for filter-based feature selection.
Other Filter:
Filter,
mlr_filters,
mlr_filters_anova,
mlr_filters_auc,
mlr_filters_boruta,
mlr_filters_carscore,
mlr_filters_carsurvscore,
mlr_filters_cmim,
mlr_filters_correlation,
mlr_filters_disr,
mlr_filters_find_correlation,
mlr_filters_importance,
mlr_filters_information_gain,
mlr_filters_jmi,
mlr_filters_jmim,
mlr_filters_kruskal_test,
mlr_filters_mim,
mlr_filters_mrmr,
mlr_filters_njmim,
mlr_filters_performance,
mlr_filters_permutation,
mlr_filters_selected_features,
mlr_filters_univariate_cox,
mlr_filters_variance
Super class
mlr3filters::Filter -> FilterRelief
Examples
if (requireNamespace("FSelectorRcpp")) {
## Relief (default)
task = mlr3::tsk("iris")
filter = flt("relief")
filter$calculate(task)
head(filter$scores, 3)
as.data.table(filter)
}
#> feature score
#> <char> <num>
#> 1: Petal.Length 0.3530508
#> 2: Petal.Width 0.3516667
#> 3: Sepal.Width 0.1770833
#> 4: Sepal.Length 0.1480556
if (mlr3misc::require_namespaces(c("mlr3pipelines", "FSelectorRcpp", "rpart"), quietly = TRUE)) {
library("mlr3pipelines")
task = mlr3::tsk("iris")
# Note: `filter.frac` is selected randomly and should be tuned.
graph = po("filter", filter = flt("relief"), filter.frac = 0.5) %>>%
po("learner", mlr3::lrn("classif.rpart"))
graph$train(task)
}
#> $classif.rpart.output
#> NULL
#>
