具有命名参数集的mlr makeModelMultiplexerParamSet

具有命名参数集的mlr makeModelMultiplexerParamSet,r,mlr,R,Mlr,makeModelMultiplexerParamSet的文档说明了可以提供命名参数集的mlr包状态,以消除对哪个学习者使用哪些参数的歧义,但文档中没有提供如何执行此操作的示例。我已经尝试了一些方法(如下图所示),但我可以让makemodelmultipureparamset工作。任何帮助都将不胜感激 base.learners = list( makeLearner("classif.ksvm", predict.type = 'prob'), makeLearner("classi

makeModelMultiplexerParamSet
的文档说明了可以提供命名参数集的mlr包状态,以消除对哪个学习者使用哪些参数的歧义,但文档中没有提供如何执行此操作的示例。我已经尝试了一些方法(如下图所示),但我可以让
makemodelmultipureparamset
工作。任何帮助都将不胜感激

base.learners = list(
  makeLearner("classif.ksvm",  predict.type = 'prob'),
  makeLearner("classif.randomForest",  predict.type = 'prob', ntree=500L),
  makeLearner('classif.xgboost', predict.type = 'prob', nthread=2, nrounds=1000L)
)
lrn = makeModelMultiplexer(base.learners)

# learners
ps = list(
  classif.randomForest = makeParamSet(makeIntegerParam("mtry", lower=1L, upper=100L)),
  classif.ksvm = makeParamSet(makeNumericParam("C", lower = 0.01, upper = 0.1),
                   makeNumericParam("sigma", lower = 0.005, upper = 0.5, trafo = function(x) 2^x)),            
  classif.xgboost = makeParamSet(makeIntegerParam("max_depth", lower=1L, upper=100L),
                      makeNumericParam("eta", lower=0.05, upper=0.5),
                      makeNumericParam("gamma", lower=0, upper=1))
)

ps = makeModelMultiplexerParamSet(lrn, ps)
错误:

Error in FUN(X[[i]], ...): List args has element of wrong type list at position 1. Should be: ParamSet
Traceback:
1. makeModelMultiplexerParamSet(lrn, ps)
2. checkListElementClass(args, "ParamSet")
3. lapply(seq_along(xs), function(i) {
 .     x = xs[[i]]
 .     if (!(is(x, cl))) 
 .         stop("List ", s, " has element of wrong type ", class(x)[1L], 
 .             " at position ", i, ". Should be: ", cl)
 . })
4. FUN(X[[i]], ...)
5. stop("List ", s, " has element of wrong type ", class(x)[1L], 
 .     " at position ", i, ". Should be: ", cl)

这种方法解决了这个问题:


使用makeModelMultiplexerParamSet()包装makeParams;e、 g.
ps=makeModelMultiplexerParamSet(lrn,classif.ksvm=makeParamSet(makeNumericParam(“sigma”,lower=-10,upper=10,trafo=function(x)2^x)),classif.randomForest=makeParamSet(makeIntegerParam(“ntree”,lower=1L,upper=500L))

尝试这种方法:。它与您得到的非常相似,但是使用
makeModelMultiplexerParamSet()
包装makeParams;e、 g.
ps=makeModelMultiplexerParamSet(lrn,classif.ksvm=makeParamSet(makeNumericParam(“sigma”,lower=-10,upper=10,trafo=function(x)2^x)),classif.randomForest=makeParamSet(makeIntegerParam(“ntree”,lower=1L,upper=500L))
就是这样做的!谢谢@jared_mamrotBrilliant-我会写下答案的