Ich versuche, das MLR-Paket zu verwenden, um die Hyperparameter eines Entscheidungsbaums abzustimmen, der mit dem Rpart-Paket erstellt wurde. Selbst wenn ich die grundlegenden Parameter des Entscheidungsbaums abstimmen kann (z. B. minsplit
, maxdepth
usw.), kann ich die Werte des Parameters param
nicht richtig einstellen. Speziell möchte ich bei der Rastersuche priors
anders ausprobieren.Tuning Pars in Rpart mit MLR-Paket?
Hier ist der Code, den ich geschrieben (dat
ist der Datenrahmen Ich verwende und target
ist meine Klassenvariable):
# Create a task
dat.task = makeClassifTask(id = "tree", data = dat, target = "target")
# Define the model
resamp = makeResampleDesc("CV", iters = 4L)
# Create the learner
lrn = makeLearner("classif.rpart")
# Create the grid params
control.grid = makeTuneControlGrid()
ps = makeParamSet(
makeDiscreteParam("cp", values = seq(0.001, 0.006, 0.002)),
makeDiscreteParam("minsplit", values = c(1, 5, 10, 50)),
makeDiscreteParam("maxdepth", values = c(20, 30, 50)),
makeDiscreteParam("parms", values = list(prior=list(c(.6, .4),
c(.5, .5))))
)
Wenn ich versuche, die Abstimmung auszuführen, mit:
# Actual tuning, with accuracy as evaluation metric
tuned = tuneParams(lrn, task = dat.task,
resampling = resamp,
control = control.grid,
par.set = ps, measures = acc)
Ich erhalte den Fehler
Error in get(paste("rpart", method, sep = "."), envir = environment())(Y, : The parms list must have names
Ich habe auch versucht parms
als UntypedParam
mit
makeUntypedParam("parms", special.vals = list(prior=list(c(.6, .4), c(.5,.5))))
Dies, weil durch die Eingabe getParamSet("classif.rpart")
war zu definieren, so scheint es mir, dass die Abstimmung eine „nicht typisierte Variablen“, anstatt eine diskrete man akzeptiert.
Allerdings, wenn ich das versuche, erhalte ich die Fehlermeldung:
Error in makeOptPath(par.set, y.names, minimize, add.transformed.x, include.error.message, :
OptPath can currently only be used for: numeric,integer,numericvector,integervector,logical,logicalvector,discrete,discretevector,character,charactervector
Kann jemand helfen?
Perfekt, danke! – aprospero