gpt4 book ai didi

R mlr 包 - 是否可以保存参数调整中的所有模型?

转载 作者:行者123 更新时间:2023-11-30 08:26:28 24 4
gpt4 key购买 nike

我想问是否可以保存在参数调整过程中创建的所有模型,例如使用 tuneParams 函数。我想保存每个超参数集的每次交叉验证的模型。

我可以看到 resamplebenchmark 函数都有 models 参数,但我在 tuneParams 中找不到一个参数 或类似的函数,但我无法真正找到一种使用其他函数来模仿此行为的方法(我是 mlr 的新手)。

有办法做到这一点吗?

PS 我知道这可能听起来很疯狂,但我需要它进行一些内部验证。

不幸的是,PS2 似乎还没有“mlr”标签,而且我没有足够的代表来创建一个标签。

最佳答案

我想有更短的解决方案,但以下内容并不那么hacky。我们使用包装器来获取模型,以便我们可以将其保存在全局环境中的列表中。或者,您可以将该行更改为更复杂的内容并将其保存在硬盘上。这可能是值得的,因为模型可能会变得很大。

library(mlr)

# Define the tuning problem
ps = makeParamSet(
makeDiscreteParam("C", values = 2^(-2:2)),
makeDiscreteParam("sigma", values = 2^(-2:2))
)
ctrl = makeTuneControlGrid()
rdesc = makeResampleDesc("Holdout")
lrn = makeLearner("classif.ksvm")


# Define a wrapper to save all models that were trained with it
makeSaveWrapper = function(learner) {
mlr:::makeBaseWrapper(
id = paste0(learner$id, "save", sep = "."),
type = learner$type,
next.learner = learner,
par.set = makeParamSet(),
par.vals = list(),
learner.subclass = "SaveWrapper",
model.subclass = "SaveModel")
}

trainLearner.SaveWrapper = function(.learner, .task, .subset, ...) {
m = train(.learner$next.learner, task = .task, subset = .subset)
stored.models <<- c(stored.models, list(m)) # not very efficient, maybe you want to save on hard disk here?
mlr:::makeChainModel(next.model = m, cl = "SaveModel")
}

predictLearner.SaveWrapper = function(.learner, .model, .newdata, ...) {
NextMethod(.newdata = .newdata)
}

stored.models = list() # initialize empty list to store results
lrn.saver = makeSaveWrapper(lrn)

res = tuneParams(lrn.saver, task = iris.task, resampling = rdesc, par.set = ps, control = ctrl)

stored.models[[1]] # the normal mlr trained model
stored.models[[1]]$learner.model # the underlying model
getLearnerParVals(stored.models[[1]]$learner) # the hyper parameter settings
stored.models[[1]]$subset # the indices used to train the model

关于R mlr 包 - 是否可以保存参数调整中的所有模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40250815/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com