Skip to content

Commit

Permalink
Refactor Filter class (#32)
Browse files Browse the repository at this point in the history
* Filter -> FilterResult

* do not update collate field

* add assert_filter_result

* more Filter -> FilterResult

* return a data.table for .$calculate()

* add a test for .$combine()

* do not export assert fun

* minor

* tetsts and more Filter -> FilterResult

* also export feature names

* - use mlr3pipelines way to register filter
- add printer
- restructure dictionary

* update tests

* doc

* remove dup

* doc

* import backports

* silence R CMD check warning

* update examples

* upd tic, solve pkgdown errors

* style and fix readme

* fix test

* fix superclass
  • Loading branch information
pat-s authored Jun 19, 2019
1 parent da35a75 commit d8fefd9
Show file tree
Hide file tree
Showing 51 changed files with 316 additions and 235 deletions.
1 change: 0 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,5 +34,4 @@ env:
global:
- _R_CHECK_FORCE_SUGGESTS_=false
- MAKEFLAGS="-j 2"
- BUILD_PKGDOWN=true
- _R_CHECK_TESTS_NLINES_=0
6 changes: 4 additions & 2 deletions DESCRIPTION
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ BugReports: https://github.com/mlr-org/mlr3featsel/issues
Depends:
R (>= 3.1.0)
Imports:
backports,
checkmate,
data.table,
mlr3,
Expand Down Expand Up @@ -57,7 +58,8 @@ NeedsCompilation: no
Roxygen: list(markdown = TRUE)
RoxygenNote: 6.1.1
Collate:
'Filter.R'
'mlr_filters.R'
'FilterResult.R'
'FilterAUC.R'
'FilterCMIM.R'
'FilterDISR.R'
Expand All @@ -74,7 +76,7 @@ Collate:
'FilterSymmetricalUncertainty.R'
'FilterVariableImportance.R'
'FilterVariance.R'
'helper_expectations.R'
'helpers.R'
'mlr_filters.R'
'reexports.R'
'zzz.R'
6 changes: 3 additions & 3 deletions NAMESPACE
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
# Generated by roxygen2: do not edit by hand

S3method(as.data.table,DictionaryFilter)
S3method(as.data.table,Filter)
export(Filter)
S3method(as.data.table,DictionaryFilterResult)
S3method(as.data.table,FilterResult)
export(FilterAUC)
export(FilterCMIM)
export(FilterDISR)
Expand All @@ -16,6 +15,7 @@ export(FilterMIM)
export(FilterMRMR)
export(FilterNJMIM)
export(FilterRankCorrelation)
export(FilterResult)
export(FilterSymmetricalUncertainty)
export(FilterVariableImportance)
export(FilterVariance)
Expand Down
8 changes: 5 additions & 3 deletions R/FilterAUC.R
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#' @title AUC Filter
#'
#' @aliases mlr_filters_auc
#' @format [R6::R6Class] inheriting from [Filter].
#' @format [R6::R6Class] inheriting from [FilterResult].
#' @include Filter.R
#'
#' @description
Expand All @@ -14,8 +14,8 @@
#' task = mlr3::mlr_tasks$get("sonar")
#' filter = FilterAUC$new()
#' filter$calculate(task)
#' head(as.data.table(filter), 3)
FilterAUC = R6Class("FilterAUC", inherit = Filter,
#' as.data.table(filter)[1:3]
FilterAUC = R6Class("FilterAUC", inherit = FilterResult,
public = list(
initialize = function(id = "auc") {
super$initialize(
Expand All @@ -37,3 +37,5 @@ FilterAUC = R6Class("FilterAUC", inherit = Filter,
}
)
)

register_filter("auc", FilterAUC)
8 changes: 5 additions & 3 deletions R/FilterCMIM.R
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#' @title Minimal Conditional Mutual Information Filter
#'
#' @aliases mlr_filters_cmim
#' @format [R6::R6Class] inheriting from [Filter].
#' @format [R6::R6Class] inheriting from [FilterResult].
#' @include Filter.R
#'
#' @description
Expand All @@ -14,8 +14,8 @@
#' task = mlr3::mlr_tasks$get("iris")
#' filter = FilterCMIM$new()
#' filter$calculate(task)
#' head(as.data.table(filter), 3)
FilterCMIM = R6Class("FilterCMIM", inherit = Filter,
#' as.data.table(filter)[1:3]
FilterCMIM = R6Class("FilterCMIM", inherit = FilterResult,
public = list(
initialize = function(id = "cmim") {
super$initialize(
Expand All @@ -35,3 +35,5 @@ FilterCMIM = R6Class("FilterCMIM", inherit = Filter,
}
)
)

register_filter("cmim", FilterCMIM)
8 changes: 5 additions & 3 deletions R/FilterDISR.R
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#' @title Double Input Symmetrical Relevance Filter
#'
#' @aliases mlr_filters_disr
#' @format [R6::R6Class] inheriting from [Filter].
#' @format [R6::R6Class] inheriting from [FilterResult].
#' @include Filter.R
#'
#' @description
Expand All @@ -14,8 +14,8 @@
#' task = mlr3::mlr_tasks$get("iris")
#' filter = FilterDISR$new()
#' filter$calculate(task)
#' head(as.data.table(filter), 3)
FilterDISR = R6Class("FilterDISR", inherit = Filter,
#' as.data.table(filter)[1:3]
FilterDISR = R6Class("FilterDISR", inherit = FilterResult,
public = list(
initialize = function(id = "disr") {
super$initialize(
Expand All @@ -35,3 +35,5 @@ FilterDISR = R6Class("FilterDISR", inherit = Filter,
}
)
)

register_filter("disr", FilterDISR)
8 changes: 5 additions & 3 deletions R/FilterGainRatio.R
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#' @title Gain Ratio Filter
#'
#' @aliases mlr_filters_gain_ratio
#' @format [R6::R6Class] inheriting from [Filter].
#' @format [R6::R6Class] inheriting from [FilterResult].
#' @include Filter.R
#'
#' @description
Expand All @@ -15,8 +15,8 @@
#' task = mlr3::mlr_tasks$get("sonar")
#' filter = FilterGainRatio$new()
#' filter$calculate(task)
#' head(as.data.table(filter), 3)
FilterGainRatio = R6Class("FilterGainRatio", inherit = Filter,
#' as.data.table(filter)[1:3]
FilterGainRatio = R6Class("FilterGainRatio", inherit = FilterResult,
public = list(
initialize = function(id = "gain_ratio") {
super$initialize(
Expand All @@ -38,3 +38,5 @@ FilterGainRatio = R6Class("FilterGainRatio", inherit = Filter,
}
)
)

register_filter("gain_ratio", FilterGainRatio)
8 changes: 5 additions & 3 deletions R/FilterInformationGain.R
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#' @title Information Gain Filter
#'
#' @aliases mlr_filters_information_gain
#' @format [R6::R6Class] inheriting from [Filter].
#' @format [R6::R6Class] inheriting from [FilterResult].
#' @include Filter.R
#'
#' @description
Expand All @@ -15,8 +15,8 @@
#' task = mlr3::mlr_tasks$get("sonar")
#' filter = FilterInformationGain$new()
#' filter$calculate(task)
#' head(as.data.table(filter), 3)
FilterInformationGain = R6Class("FilterInformationGain", inherit = Filter,
#' as.data.table(filter)[1:3]
FilterInformationGain = R6Class("FilterInformationGain", inherit = FilterResult,
public = list(
initialize = function(id = "information_gain") {
super$initialize(
Expand All @@ -37,3 +37,5 @@ FilterInformationGain = R6Class("FilterInformationGain", inherit = Filter,
}
)
)

register_filter("information_gain", FilterInformationGain)
8 changes: 5 additions & 3 deletions R/FilterJMI.R
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#' @title Joint Mutual Information Filter
#'
#' @aliases mlr_filters_jmi
#' @format [R6::R6Class] inheriting from [Filter].
#' @format [R6::R6Class] inheriting from [FilterResult].
#' @include Filter.R
#'
#' @description
Expand All @@ -14,8 +14,8 @@
#' task = mlr3::mlr_tasks$get("iris")
#' filter = FilterJMI$new()
#' filter$calculate(task)
#' head(as.data.table(filter), 3)
FilterJMI = R6Class("FilterJMI", inherit = Filter,
#' as.data.table(filter)[1:3]
FilterJMI = R6Class("FilterJMI", inherit = FilterResult,
public = list(
initialize = function(id = "jmi") {
super$initialize(
Expand All @@ -35,3 +35,5 @@ FilterJMI = R6Class("FilterJMI", inherit = Filter,
}
)
)

register_filter("jmi", FilterJMI)
6 changes: 3 additions & 3 deletions R/FilterJMIM.R
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#' @title Minimal Joint Mutual Information Maximisation Filter
#'
#' @aliases mlr_filters_jmim
#' @format [R6::R6Class] inheriting from [Filter].
#' @format [R6::R6Class] inheriting from [FilterResult].
#' @include Filter.R
#'
#' @description
Expand All @@ -14,8 +14,8 @@
#' task = mlr3::mlr_tasks$get("iris")
#' filter = FilterJMIM$new()
#' filter$calculate(task)
#' head(as.data.table(filter), 3)
FilterJMIM = R6Class("FilterJMIM", inherit = Filter,
#' as.data.table(filter)[1:3]
FilterJMIM = R6Class("FilterJMIM", inherit = FilterResult,
public = list(
initialize = function(id = "jmim") {
super$initialize(
Expand Down
8 changes: 5 additions & 3 deletions R/FilterKruskalTest.R
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#' @title Kruskal-Wallis Test Filter
#'
#' @aliases mlr_filters_kruskal_test
#' @format [R6::R6Class] inheriting from [Filter].
#' @format [R6::R6Class] inheriting from [FilterResult].
#' @include Filter.R
#'
#' @description
Expand All @@ -14,8 +14,8 @@
#' task = mlr3::mlr_tasks$get("iris")
#' filter = FilterKruskalTest$new()
#' filter$calculate(task)
#' head(as.data.table(filter), 3)
FilterKruskalTest = R6Class("FilterKruskalTest", inherit = Filter,
#' as.data.table(filter)[1:3]
FilterKruskalTest = R6Class("FilterKruskalTest", inherit = FilterResult,
public = list(
initialize = function(id = "kruskal_test") {
super$initialize(
Expand All @@ -38,3 +38,5 @@ FilterKruskalTest = R6Class("FilterKruskalTest", inherit = Filter,
}
)
)

register_filter("kruskal_test", FilterKruskalTest)
8 changes: 5 additions & 3 deletions R/FilterLinearCorrelation.R
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#' @title Linear Correlation Filter
#'
#' @aliases mlr_filters_linear_correlation
#' @format [R6::R6Class] inheriting from [Filter].
#' @format [R6::R6Class] inheriting from [FilterResult].
#' @include Filter.R
#'
#' @description
Expand All @@ -14,8 +14,8 @@
#' task = mlr3::mlr_tasks$get("mtcars")
#' filter = FilterLinearCorrelation$new()
#' filter$calculate(task)
#' head(as.data.table(filter), 3)
FilterLinearCorrelation = R6Class("FilterLinearCorrelation", inherit = Filter,
#' as.data.table(filter)[1:3]
FilterLinearCorrelation = R6Class("FilterLinearCorrelation", inherit = FilterResult,
public = list(
initialize = function(id = "linear_correlation") {
super$initialize(
Expand All @@ -37,3 +37,5 @@ FilterLinearCorrelation = R6Class("FilterLinearCorrelation", inherit = Filter,
}
)
)

register_filter("linear_correlation", FilterLinearCorrelation)
8 changes: 5 additions & 3 deletions R/FilterMIM.R
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#' @title Conditional Mutual Information Based Feature Selection Filter
#'
#' @aliases mlr_filters_mim
#' @format [R6::R6Class] inheriting from [Filter].
#' @format [R6::R6Class] inheriting from [FilterResult].
#' @include Filter.R
#'
#' @description
Expand All @@ -14,8 +14,8 @@
#' task = mlr3::mlr_tasks$get("iris")
#' filter = FilterMIM$new()
#' filter$calculate(task)
#' head(as.data.table(filter), 3)
FilterMIM = R6Class("FilterMIM", inherit = Filter,
#' as.data.table(filter)[1:3]
FilterMIM = R6Class("FilterMIM", inherit = FilterResult,
public = list(
initialize = function(id = "mim") {
super$initialize(
Expand All @@ -35,3 +35,5 @@ FilterMIM = R6Class("FilterMIM", inherit = Filter,
}
)
)

register_filter("mim", FilterMIM)
4 changes: 2 additions & 2 deletions R/FilterMRMR.R
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#' @title Minimum redundancy maximal relevancy filter
#'
#' @aliases mlr_filters_MRMR
#' @format [R6::R6Class] inheriting from [Filter].
#' @format [R6::R6Class] inheriting from [FilterResult].
#' @include Filter.R
#'
#' @description
Expand All @@ -15,7 +15,7 @@
#' filter = FilterMRMR$new()
#' filter$calculate(task)
#' head(as.data.table(filter), 3)
FilterMRMR = R6Class("FilterMRMR", inherit = Filter,
FilterMRMR = R6Class("FilterMRMR", inherit = FilterResult,
public = list(
initialize = function(id = "MRMR") {
super$initialize(
Expand Down
8 changes: 5 additions & 3 deletions R/FilterNJMIM.R
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#' @title Minimal Normalised Joint Mutual Information Maximisation Filter
#'
#' @aliases mlr_filters_njmim
#' @format [R6::R6Class] inheriting from [Filter].
#' @format [R6::R6Class] inheriting from [FilterResult].
#' @include Filter.R
#'
#' @description
Expand All @@ -14,8 +14,8 @@
#' task = mlr3::mlr_tasks$get("iris")
#' filter = FilterNJMIM$new()
#' filter$calculate(task)
#' head(as.data.table(filter), 3)
FilterNJMIM = R6Class("FilterNJMIM", inherit = Filter,
#' as.data.table(filter)[1:3]
FilterNJMIM = R6Class("FilterNJMIM", inherit = FilterResult,
public = list(
initialize = function(id = "njmim") {
super$initialize(
Expand All @@ -35,3 +35,5 @@ FilterNJMIM = R6Class("FilterNJMIM", inherit = Filter,
}
)
)

register_filter("njmim", FilterNJMIM)
8 changes: 5 additions & 3 deletions R/FilterRankCorrelation.R
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#' @title Rank Correlation Filter
#'
#' @aliases mlr_filters_rank_correlation
#' @format [R6::R6Class] inheriting from [Filter].
#' @format [R6::R6Class] inheriting from [FilterResult].
#' @include Filter.R
#'
#' @description
Expand All @@ -14,8 +14,8 @@
#' task = mlr3::mlr_tasks$get("mtcars")
#' filter = FilterRankCorrelation$new()
#' filter$calculate(task)
#' head(as.data.table(filter), 3)
FilterRankCorrelation = R6Class("FilterRankCorrelation", inherit = Filter,
#' as.data.table(filter)[1:3]
FilterRankCorrelation = R6Class("FilterRankCorrelation", inherit = FilterResult,
public = list(
initialize = function(id = "rank_correlation") {
super$initialize(
Expand All @@ -37,3 +37,5 @@ FilterRankCorrelation = R6Class("FilterRankCorrelation", inherit = Filter,
}
)
)

register_filter("rank_correlation", FilterRankCorrelation)
Loading

0 comments on commit d8fefd9

Please sign in to comment.