From 16906f6e8c432b811ddf99da1b18a2a357a75235 Mon Sep 17 00:00:00 2001 From: Benjamin Auder Date: Tue, 25 Apr 2023 09:48:36 +0200 Subject: [PATCH] Preparing for CRAN upload --- .gitignore | 3 +- R/compareTo.R | 1 - agghoo.Rcheck/00_pkg_src/agghoo/DESCRIPTION | 26 -- agghoo.Rcheck/00_pkg_src/agghoo/LICENSE | 2 - agghoo.Rcheck/00_pkg_src/agghoo/NAMESPACE | 13 - .../00_pkg_src/agghoo/R/A_NAMESPACE.R | 7 - .../00_pkg_src/agghoo/R/R6_AgghooCV.R | 115 -------- agghoo.Rcheck/00_pkg_src/agghoo/R/R6_Model.R | 157 ----------- agghoo.Rcheck/00_pkg_src/agghoo/R/agghoo.R | 58 ---- agghoo.Rcheck/00_pkg_src/agghoo/R/checks.R | 102 -------- agghoo.Rcheck/00_pkg_src/agghoo/R/compareTo.R | 247 ------------------ agghoo.Rcheck/00_pkg_src/agghoo/R/utils.R | 30 --- agghoo.Rcheck/00_pkg_src/agghoo/README.md | 15 -- agghoo.Rcheck/00_pkg_src/agghoo/TODO | 2 - .../00_pkg_src/agghoo/example/example.R | 43 --- agghoo.Rcheck/00_pkg_src/agghoo/test/TODO | 1 - agghoo.Rcheck/00check.log | 52 ---- agghoo.Rcheck/00install.out | 12 - agghoo.Rcheck/Rdlatex.log | 22 -- agghoo.Rcheck/agghoo-manual.tex | 44 ---- agghoo.Rcheck/agghoo/DESCRIPTION | 27 -- agghoo.Rcheck/agghoo/LICENSE | 2 - agghoo.Rcheck/agghoo/Meta/Rd.rds | Bin 172 -> 0 bytes agghoo.Rcheck/agghoo/Meta/features.rds | Bin 122 -> 0 bytes agghoo.Rcheck/agghoo/Meta/hsearch.rds | Bin 198 -> 0 bytes agghoo.Rcheck/agghoo/Meta/links.rds | Bin 46 -> 0 bytes agghoo.Rcheck/agghoo/Meta/nsInfo.rds | Bin 292 -> 0 bytes agghoo.Rcheck/agghoo/Meta/package.rds | Bin 1146 -> 0 bytes agghoo.Rcheck/agghoo/NAMESPACE | 13 - agghoo.Rcheck/agghoo/R/agghoo | 27 -- agghoo.Rcheck/agghoo/R/agghoo.rdb | Bin 90608 -> 0 bytes agghoo.Rcheck/agghoo/R/agghoo.rdx | Bin 584 -> 0 bytes agghoo.Rcheck/agghoo/help/AnIndex | 0 agghoo.Rcheck/agghoo/help/agghoo.rdb | 0 agghoo.Rcheck/agghoo/help/agghoo.rdx | Bin 125 -> 0 bytes agghoo.Rcheck/agghoo/help/aliases.rds | Bin 69 -> 0 bytes agghoo.Rcheck/agghoo/help/paths.rds | Bin 74 -> 0 bytes agghoo.Rcheck/agghoo/html/00Index.html | 24 -- agghoo.Rcheck/agghoo/html/R.css | 120 --------- agghoo_0.1-0.tar.gz | Bin 9062 -> 0 bytes test/TODO | 1 - 41 files changed, 1 insertion(+), 1165 deletions(-) delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/DESCRIPTION delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/LICENSE delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/NAMESPACE delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/R/A_NAMESPACE.R delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/R/R6_AgghooCV.R delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/R/R6_Model.R delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/R/agghoo.R delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/R/checks.R delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/R/compareTo.R delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/R/utils.R delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/README.md delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/TODO delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/example/example.R delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/test/TODO delete mode 100644 agghoo.Rcheck/00check.log delete mode 100644 agghoo.Rcheck/00install.out delete mode 100644 agghoo.Rcheck/Rdlatex.log delete mode 100644 agghoo.Rcheck/agghoo-manual.tex delete mode 100644 agghoo.Rcheck/agghoo/DESCRIPTION delete mode 100644 agghoo.Rcheck/agghoo/LICENSE delete mode 100644 agghoo.Rcheck/agghoo/Meta/Rd.rds delete mode 100644 agghoo.Rcheck/agghoo/Meta/features.rds delete mode 100644 agghoo.Rcheck/agghoo/Meta/hsearch.rds delete mode 100644 agghoo.Rcheck/agghoo/Meta/links.rds delete mode 100644 agghoo.Rcheck/agghoo/Meta/nsInfo.rds delete mode 100644 agghoo.Rcheck/agghoo/Meta/package.rds delete mode 100644 agghoo.Rcheck/agghoo/NAMESPACE delete mode 100644 agghoo.Rcheck/agghoo/R/agghoo delete mode 100644 agghoo.Rcheck/agghoo/R/agghoo.rdb delete mode 100644 agghoo.Rcheck/agghoo/R/agghoo.rdx delete mode 100644 agghoo.Rcheck/agghoo/help/AnIndex delete mode 100644 agghoo.Rcheck/agghoo/help/agghoo.rdb delete mode 100644 agghoo.Rcheck/agghoo/help/agghoo.rdx delete mode 100644 agghoo.Rcheck/agghoo/help/aliases.rds delete mode 100644 agghoo.Rcheck/agghoo/help/paths.rds delete mode 100644 agghoo.Rcheck/agghoo/html/00Index.html delete mode 100644 agghoo.Rcheck/agghoo/html/R.css delete mode 100644 agghoo_0.1-0.tar.gz delete mode 100644 test/TODO diff --git a/.gitignore b/.gitignore index 812f17e..ae9cf7e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ -/data/ -/doc/ +/man/ .RData diff --git a/R/compareTo.R b/R/compareTo.R index fe5b24d..0eb517c 100644 --- a/R/compareTo.R +++ b/R/compareTo.R @@ -203,7 +203,6 @@ compareTo <- function( compareMulti <- function( data, target, method_s, N=100, nc=NA, floss=NULL, verbose=TRUE, ... ) { - base::require(parallel) if (is.na(nc)) nc <- parallel::detectCores() diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/DESCRIPTION b/agghoo.Rcheck/00_pkg_src/agghoo/DESCRIPTION deleted file mode 100644 index 21f9ca3..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/DESCRIPTION +++ /dev/null @@ -1,26 +0,0 @@ -Package: agghoo -Title: Aggregated Hold-Out Cross Validation -Date: 2022-08-30 -Version: 0.1-0 -Description: The 'agghoo' procedure is an alternative to usual cross-validation. - Instead of choosing the best model trained on V subsamples, it determines - a winner model for each subsample, and then aggregate the V outputs. - For the details, see "Aggregated hold-out" by Guillaume Maillard, - Sylvain Arlot, Matthieu Lerasle (2021) - published in Journal of Machine Learning Research 22(20):1--55. -Author: Sylvain Arlot [cph,ctb], - Benjamin Auder [aut,cre,cph], - Melina Gallopin [cph,ctb], - Matthieu Lerasle [cph,ctb], - Guillaume Maillard [cph,ctb] -Maintainer: Benjamin Auder -Depends: R (>= 3.5.0) -Imports: class, parallel, R6, rpart, FNN -Suggests: roxygen2 -URL: https://git.auder.net/?p=agghoo.git -License: MIT + file LICENSE -RoxygenNote: 7.2.1 -Collate: 'compareTo.R' 'agghoo.R' 'R6_AgghooCV.R' 'R6_Model.R' - 'checks.R' 'utils.R' 'A_NAMESPACE.R' -NeedsCompilation: no -Packaged: 2022-09-09 15:45:56 UTC; auder diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/LICENSE b/agghoo.Rcheck/00_pkg_src/agghoo/LICENSE deleted file mode 100644 index 094ff81..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/LICENSE +++ /dev/null @@ -1,2 +0,0 @@ -YEAR: 2021-2022 -COPYRIGHT HOLDER: Sylvain Arlot, Benjamin Auder, Melina Gallopin, Matthieu Lerasle, Guillaume Maillard diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/NAMESPACE b/agghoo.Rcheck/00_pkg_src/agghoo/NAMESPACE deleted file mode 100644 index 7bbddef..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/NAMESPACE +++ /dev/null @@ -1,13 +0,0 @@ -# Generated by roxygen2: do not edit by hand - -export(AgghooCV) -export(Model) -export(agghoo) -export(compareMulti) -export(compareRange) -export(compareTo) -importFrom(FNN,knn.reg) -importFrom(R6,R6Class) -importFrom(class,knn) -importFrom(rpart,rpart) -importFrom(stats,ppr) diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/R/A_NAMESPACE.R b/agghoo.Rcheck/00_pkg_src/agghoo/R/A_NAMESPACE.R deleted file mode 100644 index 0466833..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/R/A_NAMESPACE.R +++ /dev/null @@ -1,7 +0,0 @@ -#' @include utils.R -#' @include checks.R -#' @include R6_Model.R -#' @include R6_AgghooCV.R -#' @include agghoo.R -#' @include compareTo.R -NULL diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/R/R6_AgghooCV.R b/agghoo.Rcheck/00_pkg_src/agghoo/R/R6_AgghooCV.R deleted file mode 100644 index 328c141..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/R/R6_AgghooCV.R +++ /dev/null @@ -1,115 +0,0 @@ -#' @title R6 class with agghoo functions fit() and predict(). -#' -#' @description -#' Class encapsulating the methods to run to obtain the best predictor -#' from the list of models (see 'Model' class). -#' -#' @importFrom R6 R6Class -#' -#' @export -AgghooCV <- R6::R6Class("AgghooCV", - public = list( - #' @description Create a new AgghooCV object. - #' @param data Matrix or data.frame - #' @param target Vector of targets (generally numeric or factor) - #' @param task "regression" or "classification". - #' Default: classification if target not numeric. - #' @param gmodel Generic model returning a predictive function - #' Default: tree if mixed data, knn/ppr otherwise. - #' @param loss Function assessing the error of a prediction - #' Default: error rate or mean(abs(error)). - initialize = function(data, target, task, gmodel, loss) { - private$data <- data - private$target <- target - private$task <- task - private$gmodel <- gmodel - private$loss <- loss - }, - #' @description Fit an agghoo model. - #' @param CV List describing cross-validation to run. Slots: \cr - #' - type: 'vfold' or 'MC' for Monte-Carlo (default: MC) \cr - #' - V: number of runs (default: 10) \cr - #' - test_size: percentage of data in the test dataset, for MC - #' (irrelevant for V-fold). Default: 0.2. \cr - #' - shuffle: wether or not to shuffle data before V-fold. - #' Irrelevant for Monte-Carlo; default: TRUE \cr - #' Default (if NULL): type="MC", V=10, test_size=0.2 - fit = function(CV = NULL) { - CV <- checkCV(CV) - n <- nrow(private$data) - shuffle_inds <- NULL - if (CV$type == "vfold" && CV$shuffle) - shuffle_inds <- sample(n, n) - # Result: list of V predictive models (+ parameters for info) - private$pmodels <- list() - for (v in seq_len(CV$V)) { - # Prepare train / test data and target, from full dataset. - # dataHO: "data Hold-Out" etc. - test_indices <- get_testIndices(n, CV, v, shuffle_inds) - d <- splitTrainTest(private$data, private$target, test_indices) - best_model <- NULL - best_error <- Inf - for (p in seq_len(private$gmodel$nmodels)) { - model_pred <- private$gmodel$get(d$dataTrain, d$targetTrain, p) - prediction <- model_pred(d$dataTest) - error <- private$loss(prediction, d$targetTest) - if (error <= best_error) { - newModel <- list(model=model_pred, param=private$gmodel$getParam(p)) - if (error == best_error) - best_model[[length(best_model)+1]] <- newModel - else { - best_model <- list(newModel) - best_error <- error - } - } - } - # Choose a model at random in case of ex-aequos - private$pmodels[[v]] <- best_model[[ sample(length(best_model),1) ]] - } - }, - #' @description Predict an agghoo model (after calling fit()) - #' @param X Matrix or data.frame to predict - predict = function(X) { - if (!is.matrix(X) && !is.data.frame(X)) - stop("X: matrix or data.frame") - if (!is.list(private$pmodels)) { - print("Please call $fit() method first") - return (invisible(NULL)) - } - V <- length(private$pmodels) - oneLineX <- X[1,] - if (is.matrix(X)) - # HACK: R behaves differently with data frames and matrices. - oneLineX <- t(as.matrix(oneLineX)) - if (length(private$pmodels[[1]]$model(oneLineX)) >= 2) - # Soft classification: - return (Reduce("+", lapply(private$pmodels, function(m) m$model(X))) / V) - n <- nrow(X) - all_predictions <- as.data.frame(matrix(nrow=n, ncol=V)) - for (v in 1:V) - all_predictions[,v] <- private$pmodels[[v]]$model(X) - if (private$task == "regression") - # Easy case: just average each row - return (rowMeans(all_predictions)) - # "Hard" classification: - apply(all_predictions, 1, function(row) { - t <- table(row) - # Next lines in case of ties (broken at random) - tmax <- max(t) - sample( names(t)[which(t == tmax)], 1 ) - }) - }, - #' @description Return the list of V best parameters (after calling fit()) - getParams = function() { - lapply(private$pmodels, function(m) m$param) - } - ), - private = list( - data = NULL, - target = NULL, - task = NULL, - gmodel = NULL, - loss = NULL, - pmodels = NULL - ) -) diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/R/R6_Model.R b/agghoo.Rcheck/00_pkg_src/agghoo/R/R6_Model.R deleted file mode 100644 index d48825e..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/R/R6_Model.R +++ /dev/null @@ -1,157 +0,0 @@ -#' @title R6 class representing a (generic) model. -#' -#' @description -#' "Model" class, containing a (generic) learning function, which from -#' data + target [+ params] returns a prediction function X --> y. -#' Parameters for cross-validation are either provided or estimated. -#' Model family can be chosen among "tree", "ppr" and "knn" for now. -#' -#' @importFrom FNN knn.reg -#' @importFrom class knn -#' @importFrom stats ppr -#' @importFrom rpart rpart -#' -#' @export -Model <- R6::R6Class("Model", - public = list( - #' @field nmodels Number of parameters (= number of [predictive] models) - nmodels = NA, - #' @description Create a new generic model. - #' @param data Matrix or data.frame - #' @param target Vector of targets (generally numeric or factor) - #' @param task "regression" or "classification" - #' @param gmodel Generic model returning a predictive function; chosen - #' automatically given data and target nature if not provided. - #' @param params List of parameters for cross-validation (each defining a model) - initialize = function(data, target, task, gmodel = NULL, params = NULL) { - if (is.null(gmodel)) { - # (Generic) model not provided - all_numeric <- is.numeric(as.matrix(data)) - if (!all_numeric) - # At least one non-numeric column: use trees - gmodel = "tree" - else - # Numerical data - gmodel = ifelse(task == "regression", "ppr", "knn") - } - if (is.null(params)) - # Here, gmodel is a string (= its family), - # because a custom model must be given with its parameters. - params <- as.list(private$getParams(gmodel, data, target, task)) - private$params <- params - if (is.character(gmodel)) - gmodel <- private$getGmodel(gmodel, task) - private$gmodel <- gmodel - self$nmodels <- length(private$params) - }, - #' @description - #' Returns the model at index "index", trained on dataHO/targetHO. - #' @param dataHO Matrix or data.frame - #' @param targetHO Vector of targets (generally numeric or factor) - #' @param index Index of the model in 1...nmodels - get = function(dataHO, targetHO, index) { - private$gmodel(dataHO, targetHO, private$params[[index]]) - }, - #' @description - #' Returns the parameter at index "index". - #' @param index Index of the model in 1...nmodels - getParam = function(index) { - private$params[[index]] - } - ), - private = list( - # No need to expose model or parameters list - gmodel = NULL, - params = NULL, - # Main function: given a family, return a generic model, which in turn - # will output a predictive model from data + target + params. - getGmodel = function(family, task) { - if (family == "tree") { - function(dataHO, targetHO, param) { - base::require(rpart) - method <- ifelse(task == "classification", "class", "anova") - if (is.null(colnames(dataHO))) - colnames(dataHO) <- paste0("V", 1:ncol(dataHO)) - df <- data.frame(cbind(dataHO, target=targetHO)) - model <- rpart::rpart(target ~ ., df, method=method, control=list(cp=param)) - if (task == "regression") - type <- "vector" - else { - if (is.null(dim(targetHO))) - type <- "class" - else - type <- "prob" - } - function(X) { - if (is.null(colnames(X))) - colnames(X) <- paste0("V", 1:ncol(X)) - predict(model, as.data.frame(X), type=type) - } - } - } - else if (family == "ppr") { - function(dataHO, targetHO, param) { - model <- stats::ppr(dataHO, targetHO, nterms=param) - function(X) predict(model, X) - } - } - else if (family == "knn") { - if (task == "classification") { - function(dataHO, targetHO, param) { - base::require(class) - function(X) class::knn(dataHO, X, cl=targetHO, k=param) - } - } - else { - function(dataHO, targetHO, param) { - base::require(FNN) - function(X) FNN::knn.reg(dataHO, X, y=targetHO, k=param)$pred - } - } - } - }, - # Return a default list of parameters, given a gmodel family - getParams = function(family, data, target, task) { - if (family == "tree") { - # Run rpart once to obtain a CV grid for parameter cp - base::require(rpart) - df <- data.frame(cbind(data, target=target)) - ctrl <- list( - cp = 0, - minsplit = 2, - minbucket = 1, - xval = 0) - method <- ifelse(task == "classification", "class", "anova") - r <- rpart(target ~ ., df, method=method, control=ctrl) - cps <- r$cptable[-1,1] - if (length(cps) <= 1) - stop("No cross-validation possible: select another model") - if (length(cps) <= 11) - return (cps) - step <- (length(cps) - 1) / 10 - cps[unique(round(seq(1, length(cps), step)))] - } - else if (family == "ppr") - # This is nterms in ppr() function - 1:10 - else if (family == "knn") { - n <- nrow(data) - # Choose ~10 NN values - K <- length(unique(target)) - if (n <= 10) - return (1:(n-1)) - sqrt_n <- sqrt(n) - step <- (2*sqrt_n - 1) / 10 - grid <- unique(round(seq(1, 2*sqrt_n, step))) - if (K == 2) { - # Common binary classification case: odd number of neighbors - for (i in 2:11) { - if (grid[i] %% 2 == 0) - grid[i] <- grid[i] + 1 #arbitrary choice - } - } - grid - } - } - ) -) diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/R/agghoo.R b/agghoo.Rcheck/00_pkg_src/agghoo/R/agghoo.R deleted file mode 100644 index 48ac741..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/R/agghoo.R +++ /dev/null @@ -1,58 +0,0 @@ -#' agghoo -#' -#' Run the (core) agghoo procedure. -#' Arguments specify the list of models, their parameters and the -#' cross-validation settings, among others. -#' -#' @param data Data frame or matrix containing the data in lines. -#' @param target The target values to predict. Generally a vector, -#' but possibly a matrix in the case of "soft classification". -#' @param task "classification" or "regression". Default: -#' regression if target is numerical, classification otherwise. -#' @param gmodel A "generic model", which is a function returning a predict -#' function (taking X as only argument) from the tuple -#' (dataHO, targetHO, param), where 'HO' stands for 'Hold-Out', -#' referring to cross-validation. Cross-validation is run on an array -#' of 'param's. See params argument. Default: see R6::Model. -#' @param params A list of parameters. Often, one list cell is just a -#' numerical value, but in general it could be of any type. -#' Default: see R6::Model. -#' @param loss A function assessing the error of a prediction. -#' Arguments are y1 and y2 (comparing a prediction to known values). -#' loss(y1, y2) --> real number (error). Default: see R6::AgghooCV. -#' -#' @return -#' An R6::AgghooCV object o. Then, call o$fit() and finally o$predict(newData) -#' -#' @examples -#' # Regression: -#' a_reg <- agghoo(iris[,-c(2,5)], iris[,2]) -#' a_reg$fit() -#' pr <- a_reg$predict(iris[,-c(2,5)] + rnorm(450, sd=0.1)) -#' # Classification -#' a_cla <- agghoo(iris[,-5], iris[,5]) -#' a_cla$fit() -#' pc <- a_cla$predict(iris[,-5] + rnorm(600, sd=0.1)) -#' -#' @seealso Function \code{\link{compareTo}} -#' -#' @references -#' Guillaume Maillard, Sylvain Arlot, Matthieu Lerasle. "Aggregated hold-out". -#' Journal of Machine Learning Research 22(20):1--55, 2021. -#' -#' @export -agghoo <- function( - data, target, task = NULL, gmodel = NULL, params = NULL, loss = NULL -) { - # Args check: - checkDaTa(data, target) - task <- checkTask(task, target) - modPar <- checkModPar(gmodel, params) - loss <- checkLoss(loss, task) - - # Build Model object (= list of parameterized models) - model <- Model$new(data, target, task, modPar$gmodel, modPar$params) - - # Return AgghooCV object, to run and predict - AgghooCV$new(data, target, task, model, loss) -} diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/R/checks.R b/agghoo.Rcheck/00_pkg_src/agghoo/R/checks.R deleted file mode 100644 index a19d55f..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/R/checks.R +++ /dev/null @@ -1,102 +0,0 @@ -# Internal usage: check and fill arguments with default values. - -defaultLoss_classif <- function(y1, y2) { - if (is.null(dim(y1))) - # Standard case: "hard" classification - mean(y1 != y2) - else { - # "Soft" classification: predict() outputs a probability matrix - # In this case "target" could be in matrix form. - if (!is.null(dim(y2))) - mean(rowSums(abs(y1 - y2))) - else { - # Or not: y2 is a "factor". - y2 <- as.character(y2) - # NOTE: the user should provide target in matrix form because - # matching y2 with columns is rather inefficient! - names <- colnames(y1) - positions <- list() - for (idx in seq_along(names)) - positions[[ names[idx] ]] <- idx - mean(vapply( - seq_along(y2), - function(idx) sum(abs(y1[idx,] - positions[[ y2[idx] ]])), - 0)) - } - } -} - -defaultLoss_regress <- function(y1, y2) { - mean(abs(y1 - y2)) -} - -# TODO: allow strings like "MSE", "abs" etc -checkLoss <- function(loss, task) { - if (!is.null(loss) && !is.function(loss)) - stop("loss: function(y1, y2) --> Real") - if (is.null(loss)) { - loss <- if (task == "classification") { - defaultLoss_classif - } else { - defaultLoss_regress - } - } - loss -} - -checkCV <- function(CV) { - if (is.null(CV)) - CV <- list(type="MC", V=10, test_size=0.2, shuffle=TRUE) - else { - if (!is.list(CV)) - stop("CV: list of type('MC'|'vfold'), V(integer, [test_size, shuffle]") - if (is.null(CV$type)) { - warning("CV$type not provided: set to MC") - CV$type <- "MC" - } - if (is.null(CV$V)) { - warning("CV$V not provided: set to 10") - CV$V <- 10 - } - if (CV$type == "MC" && is.null(CV$test_size)) - CV$test_size <- 0.2 - if (CV$type == "vfold" && is.null(CV$shuffle)) - CV$shuffle <- TRUE - } - CV -} - -checkDaTa <- function(data, target) { - if (!is.data.frame(data) && !is.matrix(data)) - stop("data: data.frame or matrix") - if (is.data.frame(target) || is.matrix(target)) { - if (!is.numeric(target)) - stop("multi-columns target must be a probability matrix") - if (nrow(target) != nrow(data) || ncol(target) == 1) - stop("target probability matrix does not match data size") - } - else if (!is.numeric(target) && !is.factor(target) && !is.character(target)) - stop("target: numeric, factor or character vector") -} - -checkTask <- function(task, target) { - if (!is.null(task)) - task <- match.arg(task, c("classification", "regression")) - ifelse(is.numeric(target), "regression", "classification") -} - -checkModPar <- function(gmodel, params) { - if (is.character(gmodel)) - gmodel <- match.arg(gmodel, c("knn", "ppr", "rf", "tree")) - else if (!is.null(gmodel) && !is.function(gmodel)) - stop("gmodel: function(dataHO, targetHO, param) --> function(X) --> y") - if (is.numeric(params) || is.character(params)) - params <- as.list(params) - if (!is.list(params) && !is.null(params)) - stop("params: numerical, character, or list (passed to model)") - if (is.function(gmodel) && !is.list(params)) - stop("params must be provided when using a custom model") - if (is.list(params) && is.null(gmodel)) - stop("model (or family) must be provided when using custom params") - list(gmodel=gmodel, params=params) -} diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/R/compareTo.R b/agghoo.Rcheck/00_pkg_src/agghoo/R/compareTo.R deleted file mode 100644 index fe5b24d..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/R/compareTo.R +++ /dev/null @@ -1,247 +0,0 @@ -#' standardCV_core -#' -#' Cross-validation method, added here as an example. -#' Parameters are described in ?agghoo and ?AgghooCV -standardCV_core <- function(data, target, task, gmodel, params, loss, CV) { - n <- nrow(data) - shuffle_inds <- NULL - if (CV$type == "vfold" && CV$shuffle) - shuffle_inds <- sample(n, n) - list_testinds <- list() - for (v in seq_len(CV$V)) - list_testinds[[v]] <- get_testIndices(n, CV, v, shuffle_inds) - gmodel <- agghoo::Model$new(data, target, task, gmodel, params) - best_error <- Inf - best_p <- NULL - for (p in seq_len(gmodel$nmodels)) { - error <- Reduce('+', lapply(seq_len(CV$V), function(v) { - testIdx <- list_testinds[[v]] - d <- splitTrainTest(data, target, testIdx) - model_pred <- gmodel$get(d$dataTrain, d$targetTrain, p) - prediction <- model_pred(d$dataTest) - loss(prediction, d$targetTest) - }) ) - if (error <= best_error) { - if (error == best_error) - best_p[[length(best_p)+1]] <- p - else { - best_p <- list(p) - best_error <- error - } - } - } - chosenP <- best_p[[ sample(length(best_p), 1) ]] - list(model=gmodel$get(data, target, chosenP), param=gmodel$getParam(chosenP)) -} - -#' CVvoting_core -#' -#' "voting" cross-validation method, added here as an example. -#' Parameters are described in ?agghoo and ?AgghooCV -CVvoting_core <- function(data, target, task, gmodel, params, loss, CV) { - CV <- checkCV(CV) - n <- nrow(data) - shuffle_inds <- NULL - if (CV$type == "vfold" && CV$shuffle) - shuffle_inds <- sample(n, n) - gmodel <- agghoo::Model$new(data, target, task, gmodel, params) - bestP <- rep(0, gmodel$nmodels) - for (v in seq_len(CV$V)) { - test_indices <- get_testIndices(n, CV, v, shuffle_inds) - d <- splitTrainTest(data, target, test_indices) - best_p <- NULL - best_error <- Inf - for (p in seq_len(gmodel$nmodels)) { - model_pred <- gmodel$get(d$dataTrain, d$targetTrain, p) - prediction <- model_pred(d$dataTest) - error <- loss(prediction, d$targetTest) - if (error <= best_error) { - if (error == best_error) - best_p[[length(best_p)+1]] <- p - else { - best_p <- list(p) - best_error <- error - } - } - } - for (p in best_p) - bestP[p] <- bestP[p] + 1 - } - # Choose a param at random in case of ex-aequos: - maxP <- max(bestP) - chosenP <- sample(which(bestP == maxP), 1) - list(model=gmodel$get(data, target, chosenP), param=gmodel$getParam(chosenP)) -} - -#' standardCV_run -#' -#' Run and eval the standard cross-validation procedure. -#' Parameters are rather explicit except "floss", which corresponds to the -#' "final" loss function, applied to compute the error on testing dataset. -standardCV_run <- function( - dataTrain, dataTest, targetTrain, targetTest, floss, verbose, ... -) { - args <- list(...) - task <- checkTask(args$task, targetTrain) - modPar <- checkModPar(args$gmodel, args$params) - loss <- checkLoss(args$loss, task) - CV <- checkCV(args$CV) - s <- standardCV_core( - dataTrain, targetTrain, task, modPar$gmodel, modPar$params, loss, CV) - if (verbose) - print(paste( "Parameter:", s$param )) - p <- s$model(dataTest) - err <- floss(p, targetTest) - if (verbose) - print(paste("error CV:", err)) - invisible(err) -} - -#' CVvoting_run -#' -#' Run and eval the voting cross-validation procedure. -#' Parameters are rather explicit except "floss", which corresponds to the -#' "final" loss function, applied to compute the error on testing dataset. -CVvoting_run <- function( - dataTrain, dataTest, targetTrain, targetTest, floss, verbose, ... -) { - args <- list(...) - task <- checkTask(args$task, targetTrain) - modPar <- checkModPar(args$gmodel, args$params) - loss <- checkLoss(args$loss, task) - CV <- checkCV(args$CV) - s <- CVvoting_core( - dataTrain, targetTrain, task, modPar$gmodel, modPar$params, loss, CV) - if (verbose) - print(paste( "Parameter:", s$param )) - p <- s$model(dataTest) - err <- floss(p, targetTest) - if (verbose) - print(paste("error CV:", err)) - invisible(err) -} - -#' agghoo_run -#' -#' Run and eval the agghoo procedure. -#' Parameters are rather explicit except "floss", which corresponds to the -#' "final" loss function, applied to compute the error on testing dataset. -agghoo_run <- function( - dataTrain, dataTest, targetTrain, targetTest, floss, verbose, ... -) { - args <- list(...) - CV <- checkCV(args$CV) - # Must remove CV arg, or agghoo will complain "error: unused arg" - args$CV <- NULL - a <- do.call(agghoo, c(list(data=dataTrain, target=targetTrain), args)) - a$fit(CV) - if (verbose) { - print("Parameters:") - print(unlist(a$getParams())) - } - pa <- a$predict(dataTest) - err <- floss(pa, targetTest) - if (verbose) - print(paste("error agghoo:", err)) - invisible(err) -} - -#' compareTo -#' -#' Compare a list of learning methods (or run only one), on data/target. -#' -#' @param data Data matrix or data.frame -#' @param target Target vector (generally) -#' @param method_s Either a single function, or a list -#' (examples: agghoo_run, standardCV_run) -#' @param rseed Seed of the random generator (-1 means "random seed") -#' @param floss Loss function to compute the error on testing dataset. -#' @param verbose TRUE to request methods to be verbose. -#' @param ... arguments passed to method_s function(s) -#' -#' @export -compareTo <- function( - data, target, method_s, rseed=-1, floss=NULL, verbose=TRUE, ... -) { - if (rseed >= 0) - set.seed(rseed) - n <- nrow(data) - test_indices <- sample( n, round(n / ifelse(n >= 500, 10, 5)) ) - d <- splitTrainTest(data, target, test_indices) - - # Set error function to be used on model outputs (not in core method) - task <- checkTask(list(...)$task, target) - if (is.null(floss)) { - floss <- function(y1, y2) { - ifelse(task == "classification", mean(y1 != y2), mean(abs(y1 - y2))) - } - } - - # Run (and compare) all methods: - runOne <- function(o) { - o(d$dataTrain, d$dataTest, d$targetTrain, d$targetTest, floss, verbose, ...) - } - errors <- c() - if (is.list(method_s)) - errors <- sapply(method_s, runOne) - else if (is.function(method_s)) - errors <- runOne(method_s) - invisible(errors) -} - -#' compareMulti -#' -#' Run compareTo N times in parallel. -#' -#' @inheritParams compareTo -#' @param N Number of calls to method(s) -#' @param nc Number of cores. Set to parallel::detectCores() if undefined. -#' Set it to any value <=1 to say "no parallelism". -#' @param verbose TRUE to print task numbers and "Errors:" in the end. -#' -#' @export -compareMulti <- function( - data, target, method_s, N=100, nc=NA, floss=NULL, verbose=TRUE, ... -) { - base::require(parallel) - if (is.na(nc)) - nc <- parallel::detectCores() - - # "One" comparison for each method in method_s (list) - compareOne <- function(n) { - if (verbose) - print(n) - compareTo(data, target, method_s, n, floss, verbose=FALSE, ...) - } - - errors <- if (nc >= 2) { - parallel::mclapply(1:N, compareOne, mc.cores = nc) - } else { - lapply(1:N, compareOne) - } - if (verbose) - print("Errors:") - Reduce('+', errors) / N -} - -#' compareRange -#' -#' Run compareMulti on several values of the parameter V. -#' -#' @inheritParams compareMulti -#' @param V_range Values of V to be tested. -#' -#' @export -compareRange <- function( - data, target, method_s, N=100, nc=NA, floss=NULL, V_range=c(10,15,20), ... -) { - args <- list(...) - # Avoid warnings if V is left unspecified: - CV <- suppressWarnings( checkCV(args$CV) ) - errors <- lapply(V_range, function(V) { - args$CV$V <- V - do.call(compareMulti, c(list(data=data, target=target, method_s=method_s, - N=N, nc=nc, floss=floss, verbose=F), args)) - }) - print(paste(V_range, errors)) -} diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/R/utils.R b/agghoo.Rcheck/00_pkg_src/agghoo/R/utils.R deleted file mode 100644 index 823b123..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/R/utils.R +++ /dev/null @@ -1,30 +0,0 @@ -# Helper for cross-validation: return the next test indices. -get_testIndices <- function(n, CV, v, shuffle_inds) { - if (CV$type == "vfold") { - # Slice indices (optionnally shuffled) - first_index = round((v-1) * n / CV$V) + 1 - last_index = round(v * n / CV$V) - test_indices = first_index:last_index - if (!is.null(shuffle_inds)) - test_indices <- shuffle_inds[test_indices] - } - else - # Monte-Carlo cross-validation - test_indices = sample(n, round(n * CV$test_size)) - test_indices -} - -# Helper which split data into training and testing parts. -splitTrainTest <- function(data, target, testIdx) { - dataTrain <- data[-testIdx,] - targetTrain <- target[-testIdx] - dataTest <- data[testIdx,] - targetTest <- target[testIdx] - # [HACK] R will cast 1-dim matrices into vectors: - if (!is.matrix(dataTrain) && !is.data.frame(dataTrain)) - dataTrain <- as.matrix(dataTrain) - if (!is.matrix(dataTest) && !is.data.frame(dataTest)) - dataTest <- as.matrix(dataTest) - list(dataTrain=dataTrain, targetTrain=targetTrain, - dataTest=dataTest, targetTest=targetTest) -} diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/README.md b/agghoo.Rcheck/00_pkg_src/agghoo/README.md deleted file mode 100644 index 337abcb..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# agghoo - -R package for model selection based on aggregation. -Alternative to standard cross-validation. - -## Install the package - -From GitHub: `devtools::install_github("yagu0/agghoo")` - -Locally, in a terminal: `R CMD INSTALL .` - -## Use the package - - library(agghoo) - ?agghoo diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/TODO b/agghoo.Rcheck/00_pkg_src/agghoo/TODO deleted file mode 100644 index f197d8a..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/TODO +++ /dev/null @@ -1,2 +0,0 @@ -Support des valeurs manquantes (cf. mlbench::Ozone dataset) -Méthode pour données mixtes ? (que tree actuellement) diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/example/example.R b/agghoo.Rcheck/00_pkg_src/agghoo/example/example.R deleted file mode 100644 index 7fae2ce..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/example/example.R +++ /dev/null @@ -1,43 +0,0 @@ -library(agghoo) - -data(iris) #already there -library(mlbench) -data(PimaIndiansDiabetes) - -# Run only agghoo on iris dataset (split into train/test, etc). -# Default parameters: see ?agghoo and ?AgghooCV -compareTo(iris[,-5], iris[,5], agghoo_run) - -# Run both agghoo and standard CV, specifiying some parameters. -compareTo(iris[,-5], iris[,5], list(agghoo_run, standardCV_run), gmodel="tree") -compareTo(iris[,-5], iris[,5], list(agghoo_run, standardCV_run), - gmodel="knn", params=c(3, 7, 13, 17, 23, 31), - CV = list(type="vfold", V=5, shuffle=T)) - -# Run both agghoo and standard CV, averaging errors over N=10 runs -# (possible for a single method but wouldn't make much sense...). -compareMulti(PimaIndiansDiabetes[,-9], PimaIndiansDiabetes[,9], - list(agghoo_run, standardCV_run), N=10, gmodel="rf") - -# Compare several values of V -compareRange(PimaIndiansDiabetes[,-9], PimaIndiansDiabetes[,9], - list(agghoo_run, standardCV_run), N=10, V_range=c(10, 20, 30)) - -# For example to use average of squared differences. -# Default is "mean(abs(y1 - y2))". -loss2 <- function(y1, y2) mean((y1 - y2)^2) - -# In regression on artificial datasets (TODO: real data?) -data <- mlbench.twonorm(300, 3)$x -target <- rowSums(data) -compareMulti(data, target, list(agghoo_run, standardCV_run), - N=10, gmodel="tree", params=c(1, 3, 5, 7, 9), loss=loss2, - CV = list(type="MC", V=12, test_size=0.3)) - -compareMulti(data, target, list(agghoo_run, standardCV_run), - N=10, floss=loss2, CV = list(type="vfold", V=10, shuffle=F)) - -# Random tests to check that method doesn't fail in 1D case -M <- matrix(rnorm(200), ncol=2) -compareTo(as.matrix(M[,-2]), M[,2], list(agghoo_run, standardCV_run), gmodel="knn") -compareTo(as.matrix(M[,-2]), M[,2], list(agghoo_run, standardCV_run), gmodel="tree") diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/test/TODO b/agghoo.Rcheck/00_pkg_src/agghoo/test/TODO deleted file mode 100644 index 50acca1..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/test/TODO +++ /dev/null @@ -1 +0,0 @@ -Some unit tests? diff --git a/agghoo.Rcheck/00check.log b/agghoo.Rcheck/00check.log deleted file mode 100644 index 684daae..0000000 --- a/agghoo.Rcheck/00check.log +++ /dev/null @@ -1,52 +0,0 @@ -* using log directory ‘/home/auder/repos/agghoo/agghoo.Rcheck’ -* using R version 4.2.1 (2022-06-23) -* using platform: x86_64-pc-linux-gnu (64-bit) -* using session charset: UTF-8 -* checking for file ‘agghoo/DESCRIPTION’ ... OK -* this is package ‘agghoo’ version ‘0.1-0’ -* checking package namespace information ... OK -* checking package dependencies ... OK -* checking if this is a source package ... OK -* checking if there is a namespace ... OK -* checking for executable files ... OK -* checking for hidden files and directories ... OK -* checking for portable file names ... OK -* checking for sufficient/correct file permissions ... OK -* checking whether package ‘agghoo’ can be installed ... OK -* checking installed package size ... OK -* checking package directory ... OK -* checking DESCRIPTION meta-information ... OK -* checking top-level files ... OK -* checking for left-over files ... OK -* checking index information ... OK -* checking package subdirectories ... OK -* checking R files for non-ASCII characters ... OK -* checking R files for syntax errors ... OK -* checking whether the package can be loaded ... OK -* checking whether the package can be loaded with stated dependencies ... OK -* checking whether the package can be unloaded cleanly ... OK -* checking whether the namespace can be loaded with stated dependencies ... OK -* checking whether the namespace can be unloaded cleanly ... OK -* checking loading without being on the library search path ... OK -* checking dependencies in R code ... OK -* checking S3 generic/method consistency ... OK -* checking replacement functions ... OK -* checking foreign function calls ... OK -* checking R code for possible problems ... NOTE -compareMulti: no visible binding for global variable ‘parallel’ -Undefined global functions or variables: - parallel -* checking for missing documentation entries ... WARNING -Undocumented code objects: - ‘AgghooCV’ ‘Model’ ‘agghoo’ ‘compareMulti’ ‘compareRange’ ‘compareTo’ -All user-level objects in a package should have documentation entries. -See chapter ‘Writing R documentation files’ in the ‘Writing R -Extensions’ manual. -* checking examples ... NONE -* checking PDF version of manual ... WARNING -LaTeX errors when creating PDF version. -This typically indicates Rd problems. -* checking PDF version of manual without index ... ERROR -Re-running with no redirection of stdout/stderr. -* DONE -Status: 1 ERROR, 2 WARNINGs, 1 NOTE diff --git a/agghoo.Rcheck/00install.out b/agghoo.Rcheck/00install.out deleted file mode 100644 index 4ec7d20..0000000 --- a/agghoo.Rcheck/00install.out +++ /dev/null @@ -1,12 +0,0 @@ -* installing *source* package ‘agghoo’ ... -** using staged installation -** R -** byte-compile and prepare package for lazy loading -** help -No man pages found in package ‘agghoo’ -*** installing help indices -** building package indices -** testing if installed package can be loaded from temporary location -** testing if installed package can be loaded from final location -** testing if installed package keeps a record of temporary installation path -* DONE (agghoo) diff --git a/agghoo.Rcheck/Rdlatex.log b/agghoo.Rcheck/Rdlatex.log deleted file mode 100644 index ed3d8b1..0000000 --- a/agghoo.Rcheck/Rdlatex.log +++ /dev/null @@ -1,22 +0,0 @@ -Hmm ... looks like a package -Converting parsed Rd's to LaTeX Creating pdf output from LaTeX ... -warning: kpathsea: configuration file texmf.cnf not found in these directories: /usr/bin:/usr/bin/share/texmf-local/web2c:/usr/bin/share/texmf-dist/web2c:/usr/bin/share/texmf/web2c:/usr/bin/texmf-local/web2c:/usr/bin/texmf-dist/web2c:/usr/bin/texmf/web2c:/usr:/usr/share/texmf-local/web2c:/usr/share/texmf-dist/web2c:/usr/share/texmf/web2c:/usr/texmf-local/web2c:/usr/texmf-dist/web2c:/usr/texmf/web2c://texmf-local/web2c:/://share/texmf-local/web2c://share/texmf-dist/web2c://share/texmf/web2c://texmf-local/web2c://texmf-dist/web2c://texmf/web2c. -This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022/Arch Linux) (preloaded format=pdflatex) - -kpathsea: Running mktexfmt pdflatex.fmt -mktexfmt: No such file or directory -I can't find the format file `pdflatex.fmt'! -Warning in file(con, "r") : - cannot open file 'Rd2.log': No such file or directory -Error in file(con, "r") : cannot open the connection -warning: kpathsea: configuration file texmf.cnf not found in these directories: /usr/bin:/usr/bin/share/texmf-local/web2c:/usr/bin/share/texmf-dist/web2c:/usr/bin/share/texmf/web2c:/usr/bin/texmf-local/web2c:/usr/bin/texmf-dist/web2c:/usr/bin/texmf/web2c:/usr:/usr/share/texmf-local/web2c:/usr/share/texmf-dist/web2c:/usr/share/texmf/web2c:/usr/texmf-local/web2c:/usr/texmf-dist/web2c:/usr/texmf/web2c://texmf-local/web2c:/://share/texmf-local/web2c://share/texmf-dist/web2c://share/texmf/web2c://texmf-local/web2c://texmf-dist/web2c://texmf/web2c. -This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022/Arch Linux) (preloaded format=pdflatex) - -kpathsea: Running mktexfmt pdflatex.fmt -mktexfmt: No such file or directory -I can't find the format file `pdflatex.fmt'! -Warning in file(con, "r") : - cannot open file 'Rd2.log': No such file or directory -Error in file(con, "r") : cannot open the connection -Error in running tools::texi2pdf() -You may want to clean up by 'rm -Rf /tmp/RtmpIZpCnq/Rd2pdf1084ce20004' diff --git a/agghoo.Rcheck/agghoo-manual.tex b/agghoo.Rcheck/agghoo-manual.tex deleted file mode 100644 index 8a561f0..0000000 --- a/agghoo.Rcheck/agghoo-manual.tex +++ /dev/null @@ -1,44 +0,0 @@ -\nonstopmode{} -\documentclass[letterpaper]{book} -\usepackage[times,hyper]{Rd} -\usepackage{makeidx} -\usepackage[utf8]{inputenc} % @SET ENCODING@ -% \usepackage{graphicx} % @USE GRAPHICX@ -\makeindex{} -\begin{document} -\chapter*{} -\begin{center} -{\textbf{\huge Package `agghoo'}} -\par\bigskip{\large \today} -\end{center} -\ifthenelse{\boolean{Rd@use@hyper}}{\hypersetup{pdftitle = {agghoo: Aggregated Hold-Out Cross Validation}}}{} -\begin{description} -\raggedright{} -\item[Title]\AsIs{Aggregated Hold-Out Cross Validation} -\item[Date]\AsIs{2022-08-30} -\item[Version]\AsIs{0.1-0} -\item[Description]\AsIs{The 'agghoo' procedure is an alternative to usual cross-validation. -Instead of choosing the best model trained on V subsamples, it determines -a winner model for each subsample, and then aggregate the V outputs. -For the details, see ``Aggregated hold-out'' by Guillaume Maillard, -Sylvain Arlot, Matthieu Lerasle (2021) <}\Rhref{https://arxiv.org/abs/1909.04890}{arXiv:1909.04890}\AsIs{> -published in Journal of Machine Learning Research 22(20):1--55.} -\item[Author]\AsIs{Sylvain Arlot }\email{sylvain.arlot@universite-paris-saclay.fr}\AsIs{ [cph,ctb], -Benjamin Auder }\email{benjamin.auder@universite-paris-saclay.fr}\AsIs{ [aut,cre,cph], -Melina Gallopin }\email{melina.gallopin@universite-paris-saclay.fr}\AsIs{ [cph,ctb], -Matthieu Lerasle }\email{matthieu.lerasle@universite-paris-saclay.fr}\AsIs{ [cph,ctb], -Guillaume Maillard }\email{guillaume.maillard@uni.lu}\AsIs{ [cph,ctb]} -\item[Maintainer]\AsIs{Benjamin Auder }\email{benjamin.auder@universite-paris-saclay.fr}\AsIs{} -\item[Depends]\AsIs{R (>= 3.5.0)} -\item[Imports]\AsIs{class, parallel, R6, rpart, FNN} -\item[Suggests]\AsIs{roxygen2} -\item[URL]\AsIs{}\url{https://git.auder.net/?p=agghoo.git}\AsIs{} -\item[License]\AsIs{MIT + file LICENSE} -\item[RoxygenNote]\AsIs{7.2.1} -\item[Collate]\AsIs{'compareTo.R' 'agghoo.R' 'R6_AgghooCV.R' 'R6_Model.R' -'checks.R' 'utils.R' 'A_NAMESPACE.R'} -\item[NeedsCompilation]\AsIs{no} -\end{description} -\Rdcontents{\R{} topics documented:} -\printindex{} -\end{document} diff --git a/agghoo.Rcheck/agghoo/DESCRIPTION b/agghoo.Rcheck/agghoo/DESCRIPTION deleted file mode 100644 index cb86199..0000000 --- a/agghoo.Rcheck/agghoo/DESCRIPTION +++ /dev/null @@ -1,27 +0,0 @@ -Package: agghoo -Title: Aggregated Hold-Out Cross Validation -Date: 2022-08-30 -Version: 0.1-0 -Description: The 'agghoo' procedure is an alternative to usual cross-validation. - Instead of choosing the best model trained on V subsamples, it determines - a winner model for each subsample, and then aggregate the V outputs. - For the details, see "Aggregated hold-out" by Guillaume Maillard, - Sylvain Arlot, Matthieu Lerasle (2021) - published in Journal of Machine Learning Research 22(20):1--55. -Author: Sylvain Arlot [cph,ctb], - Benjamin Auder [aut,cre,cph], - Melina Gallopin [cph,ctb], - Matthieu Lerasle [cph,ctb], - Guillaume Maillard [cph,ctb] -Maintainer: Benjamin Auder -Depends: R (>= 3.5.0) -Imports: class, parallel, R6, rpart, FNN -Suggests: roxygen2 -URL: https://git.auder.net/?p=agghoo.git -License: MIT + file LICENSE -RoxygenNote: 7.2.1 -Collate: 'compareTo.R' 'agghoo.R' 'R6_AgghooCV.R' 'R6_Model.R' - 'checks.R' 'utils.R' 'A_NAMESPACE.R' -NeedsCompilation: no -Packaged: 2022-09-09 15:45:56 UTC; auder -Built: R 4.2.1; ; 2022-09-09 15:46:05 UTC; unix diff --git a/agghoo.Rcheck/agghoo/LICENSE b/agghoo.Rcheck/agghoo/LICENSE deleted file mode 100644 index 094ff81..0000000 --- a/agghoo.Rcheck/agghoo/LICENSE +++ /dev/null @@ -1,2 +0,0 @@ -YEAR: 2021-2022 -COPYRIGHT HOLDER: Sylvain Arlot, Benjamin Auder, Melina Gallopin, Matthieu Lerasle, Guillaume Maillard diff --git a/agghoo.Rcheck/agghoo/Meta/Rd.rds b/agghoo.Rcheck/agghoo/Meta/Rd.rds deleted file mode 100644 index f7bb5f4990633a93a5f17075e24bfb1a000bd418..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172 zcmV;d08{@TiwFP!000001B>8dU|?WoU}0ipU}gm}8CXL@+;lB~V!}WU2M`M|KmZ|H z7(30v1SA+4SQt1#hUX>brWQjraX5&Y0RRATz(IBZ diff --git a/agghoo.Rcheck/agghoo/Meta/features.rds b/agghoo.Rcheck/agghoo/Meta/features.rds deleted file mode 100644 index 3dc8fb5868dfec4ce1938b295aab023f5412ad53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122 zcmb2|=3oE==I#ec2?+^l35iK532CfGk`d0%cS>|6BxbZU%D5?rF_w^F<}4z diff --git a/agghoo.Rcheck/agghoo/Meta/hsearch.rds b/agghoo.Rcheck/agghoo/Meta/hsearch.rds deleted file mode 100644 index 051a2b789cfe3c545411daf730738338a16a6585..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198 zcmV;%06G63iwFP!000001B>8dU|?WoU}0ipU}gm}8CXL@+;lB~3}GNY8U$sthGdrHAUOF2naMC4UGtLjQ!?|?AvPg9obf-JYndV9 zO#iXCju~dSV@_sbF@|H{j;4++?B1!B<@rS^G`Gh&KQB48paicy03K1mH4Xv*04zaH A_5c6? diff --git a/agghoo.Rcheck/agghoo/Meta/links.rds b/agghoo.Rcheck/agghoo/Meta/links.rds deleted file mode 100644 index ba5b13a936f0b276058438dfb3576bf247a49edd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 xcmb2|=3oE==I#ec2?+^l35iK532CfGk`d0%cS>{{co+rv8U8L~pC}Jh1^^V$3pn`gNgGNgB{2@y;_d&& zjmqWdq_&H?S17C)M)4&+KR3$8Dn6eP*PU>#q;I>f8&Q`?>cCIjb86?YgkHpjfGgrL zhe*Z)wRf#qZ#HZ7-P)VF(p2hZqo#zypQ8zd^$dL-!id|{i6aV3011G2l12f--BFMn zVi6M$?8H&+Zsy2b1N`&@At`Zy-++x+f(0%}#2!;2!RHS3Kt_ZG7%~sw3Pd~>#1B0x zs=y>T6g~O)TBK+M{$N2sBV~ERBcQ~d%&n>zo|8DhAT=4OzboLe3}Y#>uujl2Q6oNK z9{LiL!s`Y8CJBFN@*2idco#FzBe756j3lebsir8ysdtC5LpSoctl~>4Cyd5$N+TjX z3L8jrV-q?gde83KjlKGwS>N8>s~@J;VLbMjn4mL+_?gGZsF(0`h8bbTh(e+u;me`| zmzZX=iHMu+My=LrnW|Egr68aqGSMW7_+uPkjUvG$t%W3Fq9%y#k*RqT9m216IH}rl z{9BgHTN?aM`~)a=km1f)$tFqUe@7y*tlAN+BBDY&qaF(gyd$2+Lj>*ksls%X;xUok z_%22eowp=DN|7Jkt)(_!9c63eDtF2$0 z^+)g>+%V+twBI`(43G7}|K4nx4JG`tZgU^q(h)bUbv**orL}Y2O{LzImd}!7h{D>s zJ)!okNcFMA6P2#I*Msia@$jPCJ4RV~Cg_|CirTed z!FCehKI}uzV5ePgWd_Ll2Lq=j?l0)H0^(DFi^YNY{DRoG#HD)Ah)GWi@OWLz_Ev7i%{p-6Wx;_gt&v|u#CoE$2Or3_3B5F5APX6*E z70+!e&+A|KTfHl*cLi(42hxLAhW|jlpPdioG^7jUlyWW*W?4}@Ja~Y=>X0nlA8AAV M0}F?|Gv^Bc0FpsElmGw# diff --git a/agghoo.Rcheck/agghoo/NAMESPACE b/agghoo.Rcheck/agghoo/NAMESPACE deleted file mode 100644 index 7bbddef..0000000 --- a/agghoo.Rcheck/agghoo/NAMESPACE +++ /dev/null @@ -1,13 +0,0 @@ -# Generated by roxygen2: do not edit by hand - -export(AgghooCV) -export(Model) -export(agghoo) -export(compareMulti) -export(compareRange) -export(compareTo) -importFrom(FNN,knn.reg) -importFrom(R6,R6Class) -importFrom(class,knn) -importFrom(rpart,rpart) -importFrom(stats,ppr) diff --git a/agghoo.Rcheck/agghoo/R/agghoo b/agghoo.Rcheck/agghoo/R/agghoo deleted file mode 100644 index 6686156..0000000 --- a/agghoo.Rcheck/agghoo/R/agghoo +++ /dev/null @@ -1,27 +0,0 @@ -# File share/R/nspackloader.R -# Part of the R package, https://www.R-project.org -# -# Copyright (C) 1995-2012 The R Core Team -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# A copy of the GNU General Public License is available at -# https://www.r-project.org/Licenses/ - -local({ - info <- loadingNamespaceInfo() - pkg <- info$pkgname - ns <- .getNamespace(as.name(pkg)) - if (is.null(ns)) - stop("cannot find namespace environment for ", pkg, domain = NA); - dbbase <- file.path(info$libname, pkg, "R", pkg) - lazyLoad(dbbase, ns, filter = function(n) n != ".__NAMESPACE__.") -}) diff --git a/agghoo.Rcheck/agghoo/R/agghoo.rdb b/agghoo.Rcheck/agghoo/R/agghoo.rdb deleted file mode 100644 index 4f8b251a842c22a757535faacd31ef5b1015f09f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90608 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

*}fR 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 aa0Y%t;Mxul9!qc_;AlGH&(}Yxou|Jw3Vuxh diff --git a/agghoo.Rcheck/agghoo/R/agghoo.rdx b/agghoo.Rcheck/agghoo/R/agghoo.rdx deleted file mode 100644 index 2ce7cb7bc036aa897360ddc2b81b777b706544be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 584 zcmV-O0=NAiiwFP!0000018tMfYZE~f$KNJtldS!rMDbXE97LqCHno=G!4Rv6O$lZV z9+YL=oov>myJ2>diw8weL_sWqh=<}q@$AW)r=C10co47t8=}>>Ki^Jq+2PIS``*sH zeQ)N53IKU1ZBl1z=(?8HG5HFU{|CD(71%UFM zc*REl7V-IC$R~;G#{njv5nuj*{vG1=5w2GuZazlyhq(0+Yjl&i{S%;khxpc2T<;wY ztPLnofO60jhi!5XC;P)@MB;2!*Ej0TwRWrCSkv`tEFVOiFMPLfp9HTfWhNfxdWlNwPbxM=ja z(N8xihj@``OcK^z&x?h9p@3Von2=&L=Jk`T40m(L1aFQ8zP(4g#vF^MA4Zy%C(Ai~a)`@M(<31ONasbtioQ diff --git a/agghoo.Rcheck/agghoo/help/AnIndex b/agghoo.Rcheck/agghoo/help/AnIndex deleted file mode 100644 index e69de29..0000000 diff --git a/agghoo.Rcheck/agghoo/help/agghoo.rdb b/agghoo.Rcheck/agghoo/help/agghoo.rdb deleted file mode 100644 index e69de29..0000000 diff --git a/agghoo.Rcheck/agghoo/help/agghoo.rdx b/agghoo.Rcheck/agghoo/help/agghoo.rdx deleted file mode 100644 index c28f3f9dbb3f1f2ce024b914f82eddfa9c83ac95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125 zcmb2|=3oE==I#ec2?+^l35iK532CfGk`d0%cS>|6BxbZ66cUi)h?vp9qRh4e8Sk7_lb_T&M6|6BxbNk9B63e^e`~mU{KJc@>!@j VxVw>Oh00-jhSvYPuR8#B0|3797FqxR diff --git a/agghoo.Rcheck/agghoo/help/paths.rds b/agghoo.Rcheck/agghoo/help/paths.rds deleted file mode 100644 index 3d2b25ed84024ab015134d527d6c70aa1378febd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74 zcmb2|=3oE==I#ec2?+^l35iK532CfGk`d0%cS>|6BxbNk9B63e^e`~mU{KJca@nZ6 a%e#RmZi51Iv#h{>W(MAADo - -R: Aggregated Hold-Out Cross Validation - - - -
    -

    Aggregated Hold-Out Cross Validation - -

    -
    -
    -[Up] -[Top] -

    Documentation for package ‘agghoo’ version 0.1-0

    - - - -

    Help Pages

    - - -There are no help pages in this package -
    diff --git a/agghoo.Rcheck/agghoo/html/R.css b/agghoo.Rcheck/agghoo/html/R.css deleted file mode 100644 index 2ef6cd6..0000000 --- a/agghoo.Rcheck/agghoo/html/R.css +++ /dev/null @@ -1,120 +0,0 @@ -@media screen { - .container { - padding-right: 10px; - padding-left: 10px; - margin-right: auto; - margin-left: auto; - max-width: 900px; - } -} - -.rimage img { /* from knitr - for examples and demos */ - width: 96%; - margin-left: 2%; -} - -.katex { font-size: 1.1em; } - -code { - color: inherit; - background: inherit; -} - -body { - line-height: 1.4; - background: white; - color: black; -} - -a:link { - background: white; - color: blue; -} - -a:visited { - background: white; - color: rgb(50%, 0%, 50%); -} - -h1 { - background: white; - color: rgb(55%, 55%, 55%); - font-family: monospace; - font-size: 1.4em; /* x-large; */ - text-align: center; -} - -h2 { - background: white; - color: rgb(40%, 40%, 40%); - font-family: monospace; - font-size: 1.2em; /* large; */ - text-align: center; -} - -h3 { - background: white; - color: rgb(40%, 40%, 40%); - font-family: monospace; - font-size: 1.2em; /* large; */ -} - -h4 { - background: white; - color: rgb(40%, 40%, 40%); - font-family: monospace; - font-style: italic; - font-size: 1.2em; /* large; */ -} - -h5 { - background: white; - color: rgb(40%, 40%, 40%); - font-family: monospace; -} - -h6 { - background: white; - color: rgb(40%, 40%, 40%); - font-family: monospace; - font-style: italic; -} - -img.toplogo { - width: 4em; - vertical-align: middle; -} - -img.arrow { - width: 30px; - height: 30px; - border: 0; -} - -span.acronym { - font-size: small; -} - -span.env { - font-family: monospace; -} - -span.file { - font-family: monospace; -} - -span.option{ - font-family: monospace; -} - -span.pkg { - font-weight: bold; -} - -span.samp{ - font-family: monospace; -} - -div.vignettes a:hover { - background: rgb(85%, 85%, 85%); -} diff --git a/agghoo_0.1-0.tar.gz b/agghoo_0.1-0.tar.gz deleted file mode 100644 index 719e7e903a3d6762991e700e8737c798eaa4be7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9062 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