Skip to content

Commit 4d588e4

Browse files
authored
Merge pull request #106 from mlr-org/add_gausspr
add kernlab::gausspr
2 parents ff5c013 + 606a769 commit 4d588e4

11 files changed

+454
-5
lines changed

DESCRIPTION

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Package: mlr3extralearners
22
Title: Extra Learners For mlr3
3-
Version: 0.5.3
3+
Version: 0.5.4
44
Authors@R:
55
c(person(given = "Raphael",
66
family = "Sonabend",

NAMESPACE

+2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export(LearnerClassifGAMBoost)
1313
export(LearnerClassifGBM)
1414
export(LearnerClassifGLMBoost)
1515
export(LearnerClassifGam)
16+
export(LearnerClassifGausspr)
1617
export(LearnerClassifIBk)
1718
export(LearnerClassifJ48)
1819
export(LearnerClassifJRip)
@@ -46,6 +47,7 @@ export(LearnerRegrGAMBoost)
4647
export(LearnerRegrGBM)
4748
export(LearnerRegrGLMBoost)
4849
export(LearnerRegrGam)
50+
export(LearnerRegrGausspr)
4951
export(LearnerRegrGlm)
5052
export(LearnerRegrIBk)
5153
export(LearnerRegrKSVM)

NEWS.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
# mlr3extralearners 0.5.4
2+
3+
* Add `regr.gausspr` and `classif.gausspr` from `kernlab::gausspr`
4+
15
# mlr3extralearners 0.5.3
26

37
* Fixed bugs in catboost for classification

R/learner_kernlab_classif_gausspr.R

+102
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
#' @title Classifession Gaussian Process Learner
2+
#' @author RaphaelS1
3+
#' @name mlr_learners_classif.gausspr
4+
#'
5+
#' @template class_learner
6+
#' @templateVar id classif.gausspr
7+
#' @templateVar caller gausspr
8+
#'
9+
#' @details Parameters `sigma`, `degree`, `scale`, `offset` and `order` are
10+
#' added to make tuning `kpar` easier. If `kpar` is provided then these
11+
#' new parameters are ignored. If none are provided then the default
12+
#' "automatic" is used for `kpar`.
13+
#'
14+
#' @template seealso_learner
15+
#' @template example
16+
#' @export
17+
LearnerClassifGausspr = R6Class("LearnerClassifGausspr",
18+
inherit = LearnerClassif,
19+
20+
public = list(
21+
#' @description
22+
#' Creates a new instance of this [R6][R6::R6Class] class.
23+
initialize = function() {
24+
25+
ps = ps(
26+
scaled = p_uty(default = TRUE, tag = "train"),
27+
kernel = p_fct(default = "rbfdot",
28+
levels = c(
29+
"rbfdot", "polydot", "vanilladot", "tanhdot",
30+
"laplacedot", "besseldot", "anovadot", "splinedot"),
31+
tags = "train"),
32+
sigma = p_dbl(tag = c("train", "kpar")),
33+
degree = p_dbl(tag = c("train", "kpar")),
34+
scale = p_dbl(tag = c("train", "kpar")),
35+
offset = p_dbl(tag = c("train", "kpar")),
36+
order = p_dbl(tag = c("train", "kpar")),
37+
kpar = p_uty(default = "automatic", tag = "train"),
38+
tol = p_dbl(lower = 0, default = 0.001, tag = "train"),
39+
fit = p_lgl(default = TRUE, tag = "train"),
40+
cross = p_int(lower = 0, default = 0, tag = "train"),
41+
na.action = p_uty(default = na.omit, tag = "train")
42+
)
43+
44+
super$initialize(
45+
id = "classif.gausspr",
46+
packages = "kernlab",
47+
feature_types = c("numeric", "integer", "logical", "character",
48+
"factor", "ordered"),
49+
predict_types = c("response", "prob"),
50+
properties = c("twoclass", "multiclass"),
51+
param_set = ps,
52+
man = "mlr3extralearners::mlr_learners_classif.gausspr"
53+
)
54+
}
55+
56+
57+
),
58+
59+
private = list(
60+
61+
.train = function(task) {
62+
# get parameters for training
63+
64+
pars = self$param_set$get_values(tags = "train")
65+
kpars = self$param_set$get_values(tags = "kpar")
66+
kpar = self$param_set$values$kpar
67+
68+
if (is.null(kpar)) {
69+
if (length(kpars)) {
70+
kpar = kpars
71+
} else {
72+
kpar = "automatic"
73+
}
74+
}
75+
76+
pars = pars[setdiff(names(pars), c("kpar", names(kpars)))]
77+
78+
# set column names to ensure consistency in fit and predict
79+
self$state$feature_names = task$feature_names
80+
81+
mlr3misc::invoke(kernlab::gausspr,
82+
x = task$formula(),
83+
data = task$data(),
84+
kpar = kpar,
85+
.args = pars)
86+
},
87+
88+
.predict = function(task) {
89+
90+
out = setNames(vector("list", 1L), self$predict_type)
91+
out[[1]] = mlr3misc::invoke(
92+
getMethod("predict", "gausspr"),
93+
self$model,
94+
task$data(cols = self$state$feature_names),
95+
type = self$predict_type
96+
)
97+
out
98+
}
99+
)
100+
)
101+
102+
.extralrns_dict$add("classif.gausspr", LearnerClassifGausspr)

R/learner_kernlab_regr_gausspr.R

+103
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
#' @title Regression Gaussian Process Learner
2+
#' @author RaphaelS1
3+
#' @name mlr_learners_regr.gausspr
4+
#'
5+
#' @template class_learner
6+
#' @templateVar id regr.gausspr
7+
#' @templateVar caller gausspr
8+
#'
9+
#' @details Parameters `sigma`, `degree`, `scale`, `offset` and `order` are
10+
#' added to make tuning `kpar` easier. If `kpar` is provided then these
11+
#' new parameters are ignored. If none are provided then the default
12+
#' "automatic" is used for `kpar`.
13+
#'
14+
#' @template seealso_learner
15+
#' @template example
16+
#' @export
17+
LearnerRegrGausspr = R6Class("LearnerRegrGausspr",
18+
inherit = LearnerRegr,
19+
20+
public = list(
21+
#' @description
22+
#' Creates a new instance of this [R6][R6::R6Class] class.
23+
initialize = function() {
24+
25+
ps = ps(
26+
scaled = p_uty(default = TRUE, tag = "train"),
27+
kernel = p_fct(default = "rbfdot",
28+
levels = c(
29+
"rbfdot", "polydot", "vanilladot", "tanhdot",
30+
"laplacedot", "besseldot", "anovadot", "splinedot"),
31+
tags = "train"),
32+
sigma = p_dbl(tag = c("train", "kpar")),
33+
degree = p_dbl(tag = c("train", "kpar")),
34+
scale = p_dbl(tag = c("train", "kpar")),
35+
offset = p_dbl(tag = c("train", "kpar")),
36+
order = p_dbl(tag = c("train", "kpar")),
37+
kpar = p_uty(default = "automatic", tag = "train"),
38+
var = p_dbl(lower = 0, default = 0.001, tag = "train"),
39+
variance.model = p_lgl(default = FALSE, tag = "train"),
40+
tol = p_dbl(lower = 0, default = 0.001, tag = "train"),
41+
fit = p_lgl(default = TRUE, tag = "train"),
42+
cross = p_int(lower = 0, default = 0, tag = "train"),
43+
na.action = p_uty(default = na.omit, tag = "train"),
44+
type = p_fct(default = "regression",
45+
levels = c("regression", "variance", "sdeviation"),
46+
tag = "train")
47+
)
48+
49+
super$initialize(
50+
id = "regr.gausspr",
51+
packages = "kernlab",
52+
feature_types = c("numeric", "integer", "logical", "character",
53+
"factor", "ordered"),
54+
predict_types = "response",
55+
param_set = ps,
56+
man = "mlr3extralearners::mlr_learners_regr.gausspr"
57+
)
58+
}
59+
60+
61+
),
62+
63+
private = list(
64+
65+
.train = function(task) {
66+
67+
# get parameters for training
68+
pars = self$param_set$get_values(tags = "train")
69+
kpars = self$param_set$get_values(tags = "kpar")
70+
kpar = self$param_set$values$kpar
71+
72+
if (is.null(kpar)) {
73+
if (length(kpars)) {
74+
kpar = kpars
75+
} else {
76+
kpar = "automatic"
77+
}
78+
}
79+
80+
pars = pars[setdiff(names(pars), c("kpar", names(kpars)))]
81+
82+
83+
# set column names to ensure consistency in fit and predict
84+
self$state$feature_names = task$feature_names
85+
86+
mlr3misc::invoke(kernlab::gausspr,
87+
x = task$formula(),
88+
data = task$data(),
89+
kpar = kpar,
90+
.args = pars)
91+
},
92+
93+
.predict = function(task) {
94+
list(response = as.numeric(mlr3misc::invoke(
95+
getMethod("predict", "gausspr"),
96+
self$model,
97+
task$data(cols = self$state$feature_names)
98+
)))
99+
}
100+
)
101+
)
102+
103+
.extralrns_dict$add("regr.gausspr", LearnerRegrGausspr)

R/sysdata.rda

25 Bytes
Binary file not shown.

man/mlr_learners_classif.gausspr.Rd

+100
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)