获取更多R语言和生信知识,请欢迎关注公众号:医学和生信笔记
医学和生信笔记 公众号主要分享:1.医学小知识、肛肠科小知识;2.R语言和Python相关的数据分析、可视化、机器学习等;3.生物信息学学习资料和自己的学习笔记!
超参数设置是通过paradox
包完成的。
paradox
是ParamHelpers
的重写版,完全基于R6对象。
library("paradox")
ps = ParamSet$new()
ps2 = ps
ps3 = ps$clone(deep = TRUE)
print(ps) # ps2和ps3是一样的
##
## Empty.
ps$add(ParamLgl$new("a"))
print(ps)
##
## id class lower upper nlevels default value
## 1: a ParamLgl NA NA 2
paradox
包里面的超参数主要有以下类型:
设定超参数范围的完整写法(前面几篇用到的是简写):
library("paradox")
parA = ParamLgl$new(id = "A")
parB = ParamInt$new(id = "B", lower = 0, upper = 10, tags = c("tag1", "tag2"))
parC = ParamDbl$new(id = "C", lower = 0, upper = 4, special_vals = list(NULL))
parD = ParamFct$new(id = "D", levels = c("x", "y", "z"), default = "y")
parE = ParamUty$new(id = "E", custom_check = function(x) checkmate::checkFunction(x))
每个参数必须包含以下4个部分:
其中Int/Dbl
还有lower/upper
两个参数设定范围,Fct
还有levels
参数设定因子水平。
设置超参数的简便写法:
library(paradox)
ps <- ps(
cp = p_dbl(lower = 0.001, upper = 0.1),
minsplit = p_int(lower = 1, upper = 10)
)
generate_design_grid(ps, resolution = 5)
## with 25 rows:
## cp minsplit
## 1: 0.00100 1
## 2: 0.00100 3
## 3: 0.00100 5
## 4: 0.00100 8
## 5: 0.00100 10
## 6: 0.02575 1
## 7: 0.02575 3
## 8: 0.02575 5
## 9: 0.02575 8
## 10: 0.02575 10
## 11: 0.05050 1
## 12: 0.05050 3
## 13: 0.05050 5
## 14: 0.05050 8
## 15: 0.05050 10
## 16: 0.07525 1
## 17: 0.07525 3
## 18: 0.07525 5
## 19: 0.07525 8
## 20: 0.07525 10
## 21: 0.10000 1
## 22: 0.10000 3
## 23: 0.10000 5
## 24: 0.10000 8
## 25: 0.10000 10
## cp minsplit
mlr3
包做机器学习时会在屏幕输出巨多日志,有时候并不需要,我们只要结果就可以了,这个功能是通过lgr
这个包实现的。
默认的输出日志水平是info
,通过以下代码查看全部的日志水平:
getOption("lgr.log_levels")
## NULL
这个水平是有顺序的,越往右边的水平输出的东西越多,所以如果你想减少mlr3
包的屏幕输出内容,你可以进行如下设置:
lgr::get_logger("mlr3")$set_threshold("warn")
另外,mlr3tuning
和mlr3fselect
的日志是通过bbotk
包完成的,如果想要减少其输出内容,需要进行如下设置:
lgr::get_logger("bbotk")$set_threshold("warn")
通过以上两句代码,就会显著减少mlr3
包做机器学习时的屏幕输出了。
可以把日志保存到单独的JSON
文件中。
tf = tempfile("mlr3log_", fileext = ".json")
logger = lgr::get_logger("mlr")
logger$add_appender(lgr::AppenderJson$new(tf), name = "json")
logger$warn("this is a warning from mlr3")
## WARN [21:04:23.835] this is a warning from mlr3
# 打印文件看一下
cat(readLines(tf))
## {"level":300,"timestamp":"2022-02-27 21:04:23","logger":"mlr","caller":"eval","msg":"this is a warning from mlr3"}
获取更多R语言和生信知识,请欢迎关注公众号:医学和生信笔记
医学和生信笔记 公众号主要分享:1.医学小知识、肛肠科小知识;2.R语言和Python相关的数据分析、可视化、机器学习等;3.生物信息学学习资料和自己的学习笔记!