Skip to content

Instantly share code, notes, and snippets.

@TuSKan
Created December 22, 2017 04:54
Show Gist options
  • Save TuSKan/0a0dd68e6f7362b6213df52ef4a157e5 to your computer and use it in GitHub Desktop.
Save TuSKan/0a0dd68e6f7362b6213df52ef4a157e5 to your computer and use it in GitHub Desktop.
Automation Machine Learning
library(mlr)
library("parallelMap")
# install all packages
install.packages(unlist(strsplit(as.data.frame(listLearners())$package,",")))
# Load data
dataTrain <- NULL
dataTest <- NULL
dataTarget <- "response"
parallelStartSocket(parallel::detectCores())
# Create Task
trainTask <- makeClassifTask(data = dataTrain, target = dataTarget)
testTask <- makeClassifTask(data = dataTest, target = dataTarget)
# Loop
learners <- makeModelMultiplexer(lapply(names(presetML), makeLearner))
#
params <- makeModelMultiplexerParamSet(learners, presetML)
#tuneParamsMultiCrit
tunes <- tuneParams(learner = learners, task = trainTask, resampling = makeResampleDesc("CV",iters = 10L), par.set = params, control = makeTuneControlIrace(maxExperiments = 500L), measures = acc)
#
learners <- makeModelMultiplexer(lapply(names(presetML), setHyperPars, par.vals = tunes))
#
models <- train(learners, trainTask)
#
predicts <- predict(learners, testTask)
#
parallelStop()
presetML = list(
# Extreme Gradient Boosting
classif.xgboost = makeParamSet(
makeIntegerParam(id = "nrounds", lower = 200, upper = 600, default = 300),
makeIntegerParam(id = "max_depth", lower = 3, upper = 20, default = 10),
makeNumericParam(id = "lambda", lower = 0.55, upper = 0.60, default = 0.60),
makeNumericParam(id = "eta", lower = 0.001, upper = 0.5, default = 0.1),
makeNumericParam(id = "subsample", lower = 0.10, upper = 0.80, default = 0.5),
makeNumericParam(id = "min_child_weight", lower = 1, upper = 5, default = 4),
makeNumericParam(id = "colsample_bytree", lower = 0.2, upper = 0.8, default = 0.5)
),
#rpart
classif.rpart = makeParamSet(
makeIntegerParam("minsplit",lower = 10, upper = 50, default = 30),
makeIntegerParam("minbucket", lower = 5, upper = 50, default = 20),
makeNumericParam("cp", lower = 0.001, upper = 0.2, default = 0.1)
)
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment