## ----knitr-options, include=FALSE--------------------------------------------- knitr::opts_chunk$set(comment = "#>", collapse = TRUE, eval = FALSE, fig.align = "center") ## ----load-data---------------------------------------------------------------- # library(SDMtune) # library(zeallot) # # # Prepare data # files <- list.files(path = file.path(system.file(package = "dismo"), "ex"), # pattern = "grd", # full.names = TRUE) # # predictors <- terra::rast(files) # data <- prepareSWD(species = "Virtual species", # p = virtualSp$presence, # a = virtualSp$background, # env = predictors, # categorical = "biome") # # # Split data in training, validation and testing datasets # c(train, val, test) %<-% trainValTest(data, # val = 0.2, # test = 0.2, # only_presence = TRUE, # seed = 61516) # # cat("# Training : ", nrow(train@data)) # cat("\n# Validation: ", nrow(val@data)) # cat("\n# Testing : ", nrow(test@data)) # # # Train Maxnet model with default settings # model <- train("Maxnet", # data = train) ## ----tune-reg----------------------------------------------------------------- # # Define the values for the regularization multiplier # h <- list(reg = seq(0.2, 1, 0.1)) # # # Call the gridSearch function # exp_1 <- gridSearch(model, # hypers = h, # metric = "auc", # test = val) ## ----print-exp-1-------------------------------------------------------------- # exp_1 ## ----plot-exp-1--------------------------------------------------------------- # plot(exp_1, # title = "Experiment 1") ## ----plot-exp-1-iter---------------------------------------------------------- # plot(exp_1, # title = "Experiment 1", # interactive = TRUE) ## ----slot-results------------------------------------------------------------- # exp_1@results ## ----order-results------------------------------------------------------------ # exp_1@results[order(-exp_1@results$test_AUC), ] ## ----exercise-1, eval=FALSE, class.source='exercise'-------------------------- # # Define the values for reg # h <- list(reg = 1:4) # # # Call the gridSearch function # exp_2 <- gridSearch(model, # hypers = h, # metric = "tss", # test = val) ## ----exercise-2, eval=FALSE, class.source='exercise'-------------------------- # # Define the values for fc # h <- list(fc = c("l", "lq", "lh", "lqp", "lqph", "lqpht")) # # # Call the gridSearch function # exp_3 <- gridSearch(model, # hypers = h, # metric = "auc", # test = val) ## ----exercise-3, eval=FALSE, class.source='exercise'-------------------------- # maxent_model <- train("Maxent", # data = data) # # # Define the values for fc # h <- list("iter" = seq(300, 1100, 200)) # # # Call the gridSearch function # exp_4 <- gridSearch(maxent_model, # hypers = h, # metric = "auc", # test = val) ## ----get-hypers--------------------------------------------------------------- # getTunableArgs(model) ## ----exp-5, eval=FALSE-------------------------------------------------------- # h <- list(reg = seq(0.2, 2, 0.2), # fc = c("l", "lq", "lh", "lqp", "lqph", "lqpht")) # # exp_5 <- gridSearch(model, # hypers = h, # metric = "auc", # test = val) ## ----random-search------------------------------------------------------------ # h <- list(reg = seq(0.2, 5, 0.2), # fc = c("l", "lq", "lh", "lp", "lqp", "lqph")) # # exp_6 <- randomSearch(model, # hypers = h, # metric = "auc", # test = val, # pop = 10, # seed = 65466) ## ----sdmtune-results---------------------------------------------------------- # exp_6@results ## ----optimize-model, eval=FALSE----------------------------------------------- # exp_7 <- optimizeModel(model, # hypers = h, # metric = "auc", # test = val, # pop = 15, # gen = 2, # seed = 798) ## ----merge-------------------------------------------------------------------- # # Index of the best model in the experiment # index <- which.max(exp_6@results$test_AUC) # # # New train dataset containing only the selected variables # new_train <- exp_6@models[[index]]@data # # # Merge only presence data # merged_data <- mergeSWD(new_train, # val, # only_presence = TRUE) ## ----final-model-------------------------------------------------------------- # final_model <- train("Maxnet", # data = merged_data, # fc = exp_6@results[index, 1], # reg = exp_6@results[index, 2]) ## ----final-evaluation--------------------------------------------------------- # auc(final_model, test = test) ## ----cross-validation--------------------------------------------------------- # # Create the folds from the training dataset # folds <- randomFolds(train, # k = 4, # only_presence = TRUE, # seed = 25) # # # Train the model # cv_model <- train("Maxent", # data = train, # folds = folds) ## ----randomSearch-cv---------------------------------------------------------- # h <- list(reg = seq(0.2, 5, 0.2), # fc = c("l", "lq", "lh", "lp", "lqp", "lqph")) # # exp_8 <- randomSearch(cv_model, # hypers = h, # metric = "auc", # pop = 10, # seed = 65466) ## ----final-evaluation-cv------------------------------------------------------ # final_model <- combineCV(exp_8@models[[1]]) # # auc(final_model, test = test)