This repository has been archived by the owner on Oct 4, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add AdaBoost, IBk, LMT, OneR, PART (#6)
- Loading branch information
Showing
37 changed files
with
1,711 additions
and
88 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,14 @@ | ||
Package: mlr3learners.rweka | ||
Title: M5Rules, JRip and J48 Learner for mlr3 | ||
Title: AdaBoostM1, IBk ,JRip, J48, LMT, M5Rules, OneR and PART | ||
Learner for mlr3 | ||
Version: 0.1.0.9000 | ||
Authors@R: | ||
person(given = "Henri", | ||
family = "Funk", | ||
role = "cre", | ||
email = "[email protected]") | ||
Description: JRip and J48 Learner for mlr3. | ||
Description: AdaBoostM1, IBk ,JRip, J48, LMT, M5Rules, OneR and | ||
PART Learner for mlr3. | ||
License: LGPL-3 | ||
Depends: | ||
R (>= 3.1.0) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
#' @title Classification AdaBoostM1 Learner | ||
#' | ||
#' @name mlr_learners_classif.AdaBoostM1 | ||
#' | ||
#' @description | ||
#' A [mlr3::LearnerClassif] implementing classification AdaBoostM1 from package \CRANpkg{RWeka}. | ||
# Calls [RWeka::AdaBoostM1()]. | ||
#' | ||
#' @section Custom mlr3 defaults: | ||
#' - `output_debug_info`: | ||
#' - original id: output-debug-info | ||
#' | ||
#' - `do_not_check_capabilities`: | ||
#' - original id: do-not-check-capabilities | ||
#' | ||
#' - `num_decimal_places`: | ||
#' - original id: num-decimal-places | ||
#' | ||
#' - `batch_size`: | ||
#' - original id: batch-size | ||
#' | ||
#' - Reason for change: This learner contains changed ids of the following control arguments | ||
#' since their ids contain irregular pattern | ||
#' | ||
#' @templateVar id classif.AdaBoostM1 | ||
#' @template section_dictionary_learner | ||
#' | ||
#' @references | ||
#' Freund Y, Schapire, R (1993). | ||
#' Experiments with a New Boosting Algorithm | ||
#' \url{http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.51.6252&rep=rep1&type=pdf} | ||
#' | ||
#' @export | ||
LearnerClassifAdaBoostM1 = R6Class("LearnerClassifAdaBoostM1", | ||
inherit = LearnerClassif, | ||
public = list( | ||
#' @description | ||
#' Creates a new instance of this [R6][R6::R6Class] class. | ||
initialize = function() { | ||
ps = ParamSet$new( | ||
params = list( | ||
ParamUty$new(id = "subset", tags = c("train", "pars")), | ||
ParamUty$new(id = "na.action", tags = c("train", "pars")), | ||
ParamInt$new( | ||
id = "P", default = 100L, lower = 90L, upper = 100L, | ||
tags = c("train", "control")), | ||
ParamLgl$new(id = "Q", default = FALSE, tags = c("train", "control")), | ||
ParamInt$new(id = "S", default = 1L, lower = 1L, tags = c("train", "control")), | ||
ParamInt$new(id = "I", default = 10L, lower = 1L, tags = c("train", "control")), | ||
ParamUty$new( | ||
id = "W", default = "weka.classifiers.trees.DecisionStump", | ||
tags = c("train", "control")), | ||
ParamLgl$new(id = "output_debug_info", default = FALSE, tags = c("train", "control")), | ||
ParamLgl$new( | ||
id = "do_not_check_capabilities", default = FALSE, | ||
tags = c("train", "control")), | ||
ParamInt$new( | ||
id = "num_decimal_places", default = 2L, lower = 1L, | ||
tags = c("train", "control")), | ||
ParamInt$new(id = "batch_size", default = 100L, lower = 1L, tags = c("train", "control")), | ||
ParamUty$new(id = "options", default = NULL, tags = c("train", "pars")) | ||
) | ||
) | ||
|
||
super$initialize( | ||
id = "classif.AdaBoostM1", | ||
packages = "RWeka", | ||
feature_types = c("numeric", "factor", "ordered"), | ||
predict_types = c("response", "prob"), | ||
param_set = ps, | ||
properties = c("twoclass", "multiclass"), | ||
man = "mlr3learners.rweka::mlr_learners_classif.AdaBoostM1" | ||
) | ||
} | ||
), | ||
|
||
private = list( | ||
.train = function(task) { | ||
ctrl = self$param_set$get_values(tags = "control") | ||
if (length(ctrl) > 0L) { | ||
names(ctrl) = gsub("_", replacement = "-", x = names(ctrl)) | ||
ctrl = mlr3misc::invoke(RWeka::Weka_control, ctrl) | ||
} | ||
|
||
pars = self$param_set$get_values(tags = "pars") | ||
f = task$formula() | ||
data = task$data() | ||
mlr3misc::invoke(RWeka::AdaBoostM1, formula = f, data = data, control = ctrl, .args = pars) | ||
}, | ||
|
||
.predict = function(task) { | ||
response = NULL | ||
prob = NULL | ||
newdata = task$data(cols = task$feature_names) | ||
|
||
if (self$predict_type == "response") { | ||
response = mlr3misc::invoke(predict, self$model, newdata = newdata, type = "class") | ||
} else { | ||
prob = mlr3misc::invoke(predict, self$model, newdata = newdata, type = "prob") | ||
} | ||
PredictionClassif$new(task = task, response = response, prob = prob) | ||
} | ||
) | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
#' @title Classification IBk Learner | ||
#' | ||
#' @name mlr_learners_classif.IBk | ||
#' | ||
#' @description | ||
#' A [mlr3::LearnerClassif] implementing classification IBk from package \CRANpkg{RWeka}. | ||
#' Calls [RWeka::IBk()]. | ||
#' | ||
#' @section Custom mlr3 defaults: | ||
#' - `output_debug_info`: | ||
#' - original id: output-debug-info | ||
#' | ||
#' - `do_not_check_capabilities`: | ||
#' - original id: do-not-check-capabilities | ||
#' | ||
#' - `num_decimal_places`: | ||
#' - original id: num-decimal-places | ||
#' | ||
#' - `batch_size`: | ||
#' - original id: batch-size | ||
#' | ||
#' - Reason for change: This learner contains changed ids of the following control arguments | ||
#' since their ids contain irregular pattern | ||
#' | ||
#' @templateVar id classif.IBk | ||
#' @template section_dictionary_learner | ||
#' | ||
#' @references | ||
#' Aha D, Kibbler D, Alber M (1991). | ||
#' Instance-based learning algorithms | ||
#' \url{https://link.springer.com/content/pdf/10.1007/BF00153759.pdf} | ||
#' | ||
#' @export | ||
LearnerClassifIBk = R6Class("LearnerClassifIBk", | ||
inherit = LearnerClassif, | ||
public = list( | ||
#' @description | ||
#' Creates a new instance of this [R6][R6::R6Class] class. | ||
initialize = function() { | ||
ps = ParamSet$new( | ||
params = list( | ||
ParamUty$new(id = "subset", tags = c("train", "pars")), | ||
ParamUty$new(id = "na.action", tags = c("train", "pars")), | ||
ParamLgl$new(id = "I", default = FALSE, tags = c("train", "control")), | ||
ParamLgl$new(id = "F", default = FALSE, tags = c("train", "control")), | ||
ParamInt$new(id = "K", default = 1L, lower = 1L, tags = c("train", "control")), | ||
ParamLgl$new(id = "E", default = FALSE, tags = c("train", "control")), | ||
ParamInt$new(id = "W", default = 0L, lower = 0L, tags = c("train", "control")), | ||
ParamLgl$new(id = "X", default = FALSE, tags = c("train", "control")), | ||
ParamUty$new( | ||
id = "A", default = "weka.core.neighboursearch.LinearNNSearch", | ||
tags = c("train", "control")), | ||
ParamLgl$new(id = "output_debug_info", default = FALSE, tags = c("train", "control")), | ||
ParamLgl$new( | ||
id = "do_not_check_capabilities", default = FALSE, | ||
tags = c("train", "control")), | ||
ParamInt$new( | ||
id = "num_decimal_places", default = 2L, lower = 1L, | ||
tags = c("train", "control")), | ||
ParamInt$new(id = "batch_size", default = 100L, lower = 1L, tags = c("train", "control")), | ||
ParamUty$new(id = "options", default = NULL, tags = c("train", "pars")) | ||
) | ||
) | ||
|
||
super$initialize( | ||
id = "classif.IBk", | ||
packages = "RWeka", | ||
feature_types = c("numeric", "factor", "ordered"), | ||
predict_types = c("response", "prob"), | ||
param_set = ps, | ||
properties = c("twoclass", "multiclass"), | ||
man = "mlr3learners.rweka::mlr_learners_classif.IBk" | ||
) | ||
} | ||
), | ||
|
||
private = list( | ||
.train = function(task) { | ||
ctrl = self$param_set$get_values(tags = "control") | ||
if (length(ctrl) > 0L) { | ||
names(ctrl) = gsub("_", replacement = "-", x = names(ctrl)) | ||
ctrl = mlr3misc::invoke(RWeka::Weka_control, ctrl) | ||
} | ||
|
||
pars = self$param_set$get_values(tags = "pars") | ||
f = task$formula() | ||
data = task$data() | ||
mlr3misc::invoke(RWeka::IBk, formula = f, data = data, control = ctrl, .args = pars) | ||
}, | ||
|
||
.predict = function(task) { | ||
response = NULL | ||
prob = NULL | ||
newdata = task$data(cols = task$feature_names) | ||
|
||
if (self$predict_type == "response") { | ||
response = mlr3misc::invoke(predict, self$model, newdata = newdata, type = "class") | ||
} else { | ||
prob = mlr3misc::invoke(predict, self$model, newdata = newdata, type = "prob") | ||
} | ||
PredictionClassif$new(task = task, response = response, prob = prob) | ||
} | ||
) | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.