According to book chapter 2.3, we can use mlr3::insert_named() to set specific arguments without resetting existing arguments. However, when I tried to use it for a learner of class "regr.glmnet" the function didn't appear to work at all:
library(mlr3)
library(mlr3learners)
library(mlr3misc)
learner <- mlr_learners$get("regr.glmnet")
learner$param_set
<ParamSet>
id class lower upper levels default parents value
1: alignment ParamFct NA NA lambda,fraction lambda
2: alpha ParamDbl 0 1 1
3: big ParamDbl -Inf Inf 9.9e+35
4: devmax ParamDbl 0 1 0.999
5: dfmax ParamInt 0 Inf <NoDefault[3]>
6: eps ParamDbl 0 1 1e-06
7: epsnr ParamDbl 0 1 1e-08
8: exact ParamLgl NA NA TRUE,FALSE FALSE
9: exclude ParamInt 1 Inf <NoDefault[3]>
10: exmx ParamDbl -Inf Inf 250
11: family ParamFct NA NA gaussian,poisson gaussian gaussian
12: fdev ParamDbl 0 1 1e-05
13: gamma ParamDbl -Inf Inf 1 relax
14: grouped ParamLgl NA NA TRUE,FALSE TRUE
15: intercept ParamLgl NA NA TRUE,FALSE TRUE
16: keep ParamLgl NA NA TRUE,FALSE FALSE
17: lambda ParamUty NA NA <NoDefault[3]>
18: lambda.min.ratio ParamDbl 0 1 <NoDefault[3]>
19: lower.limits ParamUty NA NA <NoDefault[3]>
20: maxit ParamInt 1 Inf 100000
21: mnlam ParamInt 1 Inf 5
22: mxit ParamInt 1 Inf 100
23: mxitnr ParamInt 1 Inf 25
24: newoffset ParamUty NA NA <NoDefault[3]>
25: nlambda ParamInt 1 Inf 100
26: offset ParamUty NA NA
27: parallel ParamLgl NA NA TRUE,FALSE FALSE
28: penalty.factor ParamUty NA NA <NoDefault[3]>
29: pmax ParamInt 0 Inf <NoDefault[3]>
30: pmin ParamDbl 0 1 1e-09
31: prec ParamDbl -Inf Inf 1e-10
32: predict.gamma ParamDbl -Inf Inf 1
33: relax ParamLgl NA NA TRUE,FALSE FALSE
34: s ParamDbl 0 Inf 0.01
35: standardize ParamLgl NA NA TRUE,FALSE TRUE
36: thresh ParamDbl 0 Inf 1e-07
37: trace.it ParamInt 0 1 0
38: type.gaussian ParamFct NA NA covariance,naive <NoDefault[3]> family
39: type.logistic ParamFct NA NA Newton,modified.Newton <NoDefault[3]>
40: type.measure ParamFct NA NA deviance,class,auc,mse,mae deviance
41: type.multinomial ParamFct NA NA ungrouped,grouped <NoDefault[3]>
42: upper.limits ParamUty NA NA <NoDefault[3]>
id class lower upper levels default parents value
## insert new params
insert_named(learner$param_set$values,
list(family="poisson",
lambda=0))
learner$param_set
<ParamSet>
id class lower upper levels default parents value
1: alignment ParamFct NA NA lambda,fraction lambda
2: alpha ParamDbl 0 1 1
3: big ParamDbl -Inf Inf 9.9e+35
4: devmax ParamDbl 0 1 0.999
5: dfmax ParamInt 0 Inf <NoDefault[3]>
6: eps ParamDbl 0 1 1e-06
7: epsnr ParamDbl 0 1 1e-08
8: exact ParamLgl NA NA TRUE,FALSE FALSE
9: exclude ParamInt 1 Inf <NoDefault[3]>
10: exmx ParamDbl -Inf Inf 250
11: family ParamFct NA NA gaussian,poisson gaussian gaussian
12: fdev ParamDbl 0 1 1e-05
13: gamma ParamDbl -Inf Inf 1 relax
14: grouped ParamLgl NA NA TRUE,FALSE TRUE
15: intercept ParamLgl NA NA TRUE,FALSE TRUE
16: keep ParamLgl NA NA TRUE,FALSE FALSE
17: lambda ParamUty NA NA <NoDefault[3]>
18: lambda.min.ratio ParamDbl 0 1 <NoDefault[3]>
19: lower.limits ParamUty NA NA <NoDefault[3]>
20: maxit ParamInt 1 Inf 100000
21: mnlam ParamInt 1 Inf 5
22: mxit ParamInt 1 Inf 100
23: mxitnr ParamInt 1 Inf 25
24: newoffset ParamUty NA NA <NoDefault[3]>
25: nlambda ParamInt 1 Inf 100
26: offset ParamUty NA NA
27: parallel ParamLgl NA NA TRUE,FALSE FALSE
28: penalty.factor ParamUty NA NA <NoDefault[3]>
29: pmax ParamInt 0 Inf <NoDefault[3]>
30: pmin ParamDbl 0 1 1e-09
31: prec ParamDbl -Inf Inf 1e-10
32: predict.gamma ParamDbl -Inf Inf 1
33: relax ParamLgl NA NA TRUE,FALSE FALSE
34: s ParamDbl 0 Inf 0.01
35: standardize ParamLgl NA NA TRUE,FALSE TRUE
36: thresh ParamDbl 0 Inf 1e-07
37: trace.it ParamInt 0 1 0
38: type.gaussian ParamFct NA NA covariance,naive <NoDefault[3]> family
39: type.logistic ParamFct NA NA Newton,modified.Newton <NoDefault[3]>
40: type.measure ParamFct NA NA deviance,class,auc,mse,mae deviance
41: type.multinomial ParamFct NA NA ungrouped,grouped <NoDefault[3]>
42: upper.limits ParamUty NA NA <NoDefault[3]>
id class lower upper levels default parents value
However it does appear to work when I overwrite it directly:
learner$param_set$values <- list(family="poisson",
lambda=0)
learner$param_set
<ParamSet>
id class lower upper levels default parents value
1: alignment ParamFct NA NA lambda,fraction lambda
2: alpha ParamDbl 0 1 1
3: big ParamDbl -Inf Inf 9.9e+35
4: devmax ParamDbl 0 1 0.999
5: dfmax ParamInt 0 Inf <NoDefault[3]>
6: eps ParamDbl 0 1 1e-06
7: epsnr ParamDbl 0 1 1e-08
8: exact ParamLgl NA NA TRUE,FALSE FALSE
9: exclude ParamInt 1 Inf <NoDefault[3]>
10: exmx ParamDbl -Inf Inf 250
11: family ParamFct NA NA gaussian,poisson gaussian poisson
12: fdev ParamDbl 0 1 1e-05
13: gamma ParamDbl -Inf Inf 1 relax
14: grouped ParamLgl NA NA TRUE,FALSE TRUE
15: intercept ParamLgl NA NA TRUE,FALSE TRUE
16: keep ParamLgl NA NA TRUE,FALSE FALSE
17: lambda ParamUty NA NA <NoDefault[3]> 0
18: lambda.min.ratio ParamDbl 0 1 <NoDefault[3]>
19: lower.limits ParamUty NA NA <NoDefault[3]>
20: maxit ParamInt 1 Inf 100000
21: mnlam ParamInt 1 Inf 5
22: mxit ParamInt 1 Inf 100
23: mxitnr ParamInt 1 Inf 25
24: newoffset ParamUty NA NA <NoDefault[3]>
25: nlambda ParamInt 1 Inf 100
26: offset ParamUty NA NA
27: parallel ParamLgl NA NA TRUE,FALSE FALSE
28: penalty.factor ParamUty NA NA <NoDefault[3]>
29: pmax ParamInt 0 Inf <NoDefault[3]>
30: pmin ParamDbl 0 1 1e-09
31: prec ParamDbl -Inf Inf 1e-10
32: predict.gamma ParamDbl -Inf Inf 1
33: relax ParamLgl NA NA TRUE,FALSE FALSE
34: s ParamDbl 0 Inf 0.01
35: standardize ParamLgl NA NA TRUE,FALSE TRUE
36: thresh ParamDbl 0 Inf 1e-07
37: trace.it ParamInt 0 1 0
38: type.gaussian ParamFct NA NA covariance,naive <NoDefault[3]> family
39: type.logistic ParamFct NA NA Newton,modified.Newton <NoDefault[3]>
40: type.measure ParamFct NA NA deviance,class,auc,mse,mae deviance
41: type.multinomial ParamFct NA NA ungrouped,grouped <NoDefault[3]>
42: upper.limits ParamUty NA NA <NoDefault[3]>
id class lower upper levels default parents value
I'm running R 4.0.2, mlr3 0.9.0, mlr3learners 0.4.3, mlr3misc 0.6.0.
According to book chapter 2.3, we can use
mlr3::insert_named()
to set specific arguments without resetting existing arguments. However, when I tried to use it for a learner of class "regr.glmnet" the function didn't appear to work at all:However it does appear to work when I overwrite it directly:
I'm running R 4.0.2, mlr3 0.9.0, mlr3learners 0.4.3, mlr3misc 0.6.0.