# ### Workflows
# ### In this file, there are a lot of functions form caret that are
# ### references using the explicit namespace operator (:::). For some
# ### reason, with some parallel processing technologies and foreach,
# ### functions inside of caret cannot be found despite using the
# ### ".packages" argument and calling the caret package via library().
#
# getOper <- function(x) if(x) `%dopar%` else `%do%`
# getTrainOper <- function(x) if(x) `%dopar%` else `%do%`
#
#
# progress <- function(x, names, iter, start = TRUE)
# {
# text <- paste(ifelse(start, "+ ", "- "),
# names[iter], ": ",
# paste(colnames(x), x, sep = "=", collapse = ", "),
# sep = "")
# cat(text, "\n")
# }
#
# MeanSD <- function(x, exclude = NULL)
# {
# if(!is.null(exclude)) x <- x[, !(colnames(x) %in% exclude), drop = FALSE]
# out <- c(colMeans(x, na.rm = TRUE), sapply(x, sd, na.rm = TRUE))
# names(out)[-(1:ncol(x))] <- paste(names(out)[-(1:ncol(x))], "SD", sep = "")
# out
# }
#
# expandParameters <- function(fixed, seq)
# {
# if(is.null(seq)) return(fixed)
#
# isSeq <- names(fixed) %in% names(seq)
# out <- fixed
# for(i in 1:nrow(seq))
# {
# tmp <- fixed
# tmp[,isSeq] <- seq[i,]
# out <- rbind(out, tmp)
# }
# out
# }
#
# nominalTrainWorkflow <- function(x, wts, info, method, ppOpts, ctrl, lev, testing = FALSE, ...)
# {
# library(caret)
# loadNamespace("caret")
# ppp <- list(options = ppOpts)
# ppp <- c(ppp, ctrl$preProcOptions)
#
# printed <- format(info$loop, digits = 4)
# colnames(printed) <- gsub("^\\.", "", colnames(printed))
#
# resampleIndex <- ctrl$index
# if(ctrl$method %in% c("boot632"))
# {
# resampleIndex <- c(list("AllData" = rep(0, nrow(x))), resampleIndex)
# ctrl$indexOut <- c(list("AllData" = rep(0, nrow(x))), ctrl$indexOut)
# }
# `%op%` <- getOper(ctrl$allowParallel && getDoParWorkers() > 1)
#
# pkgs <- c("methods", "caret")
# if(!is.null(method$library)) pkgs <- c(pkgs, method$library)
#
# result <- foreach(iter = seq(along = resampleIndex), .combine = "c", .verbose = FALSE, .packages = pkgs, .errorhandling = "stop") %:%
# foreach(parm = 1:nrow(info$loop), .combine = "c", .verbose = FALSE, .packages = pkgs, .errorhandling = "stop") %op%
# {
# testing <- FALSE
# if(!(length(ctrl$seeds) == 1 && is.na(ctrl$seeds))) set.seed(ctrl$seeds[[iter]][parm])
#
# library(caret)
# if(ctrl$verboseIter) progress(printed[parm,,drop = FALSE],
# names(resampleIndex), iter)
#
# if(names(resampleIndex)[iter] != "AllData")
# {
# modelIndex <- resampleIndex[[iter]]
# holdoutIndex <- ctrl$indexOut[[iter]]
# } else {
# modelIndex <- 1:nrow(x)
# holdoutIndex <- modelIndex
# }
#
# if(testing) cat("pre-model\n")
#
# if(is.null(info$submodels[[parm]]) || nrow(info$submodels[[parm]]) > 0) {
# submod <- info$submodels[[parm]]
# } else submod <- NULL
#
# mod <- try(
# createModel(x = x[modelIndex,,drop = FALSE ],
# wts = wts[modelIndex],
# method = method,
# tuneValue = info$loop[parm,,drop = FALSE],
# obsLevels = lev,
# pp = ppp,
# classProbs = ctrl$classProbs,
# ...),
# silent = TRUE)
#
# if(class(mod)[1] != "try-error")
# {
# predicted <- try(
# predictionFunction(method = method,
# modelFit = mod$fit,
# newdata = x[holdoutIndex,, drop = FALSE],
# preProc = mod$preProc,
# param = submod),
# silent = TRUE)
#
# if(class(predicted)[1] == "try-error")
# {
# wrn <- paste(colnames(printed[parm,,drop = FALSE]),
# printed[parm,,drop = FALSE],
# sep = "=",
# collapse = ", ")
# wrn <- paste("predictions failed for ", names(resampleIndex)[iter],
# ": ", wrn, " ", as.character(predicted), sep = "")
# if(ctrl$verboseIter) cat(wrn, "\n")
# warning(wrn)
# rm(wrn)
#
# ## setup a dummy results with NA values for all predictions
# nPred <- length(holdoutIndex)
# if(!is.null(lev))
# {
# predicted <- rep("", nPred)
# predicted[seq(along = predicted)] <- NA
# } else {
# predicted <- rep(NA, nPred)
# }
# if(!is.null(submod))
# {
# tmp <- predicted
# predicted <- vector(mode = "list", length = nrow(info$submodels[[parm]]) + 1)
# for(i in seq(along = predicted)) predicted[[i]] <- tmp
# rm(tmp)
# }
# }
# } else {
# wrn <- paste(colnames(printed[parm,,drop = FALSE]),
# printed[parm,,drop = FALSE],
# sep = "=",
# collapse = ", ")
# wrn <- paste("model fit failed for ", names(resampleIndex)[iter],
# ": ", wrn, " ", as.character(mod), sep = "")
# if(ctrl$verboseIter) cat(wrn, "\n")
# warning(wrn)
# rm(wrn)
#
# ## setup a dummy results with NA values for all predictions
# nPred <- length(holdoutIndex)
# if(!is.null(lev))
# {
# predicted <- rep("", nPred)
# predicted[seq(along = predicted)] <- NA
# } else {
# predicted <- rep(NA, nPred)
# }
# if(!is.null(submod))
# {
# tmp <- predicted
# predicted <- vector(mode = "list", length = nrow(info$submodels[[parm]]) + 1)
# for(i in seq(along = predicted)) predicted[[i]] <- tmp
# rm(tmp)
# }
# }
#
# if(testing) print(head(predicted))
# if(ctrl$classProbs)
# {
# if(class(mod)[1] != "try-error")
# {
# probValues <- probFunction(method = method,
# modelFit = mod$fit,
# newdata = x[holdoutIndex,, drop = FALSE],
# preProc = mod$preProc,
# param = submod)
# } else {
# probValues <- as.data.frame(matrix(NA, nrow = nPred, ncol = length(lev)))
# colnames(probValues) <- lev
# if(!is.null(submod))
# {
# tmp <- probValues
# probValues <- vector(mode = "list", length = nrow(info$submodels[[parm]]) + 1)
# for(i in seq(along = probValues)) probValues[[i]] <- tmp
# rm(tmp)
# }
# }
# if(testing) print(head(probValues))
# }
#
# ##################################
#
# if(is.numeric(y)) {
# if(is.logical(ctrl$predictionBounds) && any(ctrl$predictionBounds)) {
# if(is.list(predicted)) {
# predicted <- lapply(predicted, trimPredictions,
# mod_type = "Regression",
# bounds = ctrl$predictionBounds,
# limits = ctrl$yLimits)
# } else {
# predicted <- trimPredictions(mod_type = "Regression",
# bounds = ctrl$predictionBounds,
# limits = ctrl$yLimit,
# pred = predicted)
# }
# } else {
# if(is.numeric(ctrl$predictionBounds) && any(!is.na(ctrl$predictionBounds))) {
# if(is.list(predicted)) {
# predicted <- lapply(predicted, trimPredictions,
# mod_type = "Regression",
# bounds = ctrl$predictionBounds,
# limits = ctrl$yLimits)
# } else {
# predicted <- trimPredictions(mod_type = "Regression",
# bounds = ctrl$predictionBounds,
# limits = ctrl$yLimit,
# pred = predicted)
# }
# }
# }
# }
#
# if(!is.null(submod))
# {
# ## merge the fixed and seq parameter values together
# allParam <- expandParameters(info$loop[parm,,drop = FALSE], info$submodels[[parm]])
# allParam <- allParam[complete.cases(allParam),, drop = FALSE]
#
# ## collate the predicitons across all the sub-models
# predicted <- lapply(predicted,
# function(x, y, wts, lv) {
# if(!is.factor(x) & is.character(x)) x <- factor(as.character(x), levels = lv)
# out <- data.frame(pred = x, obs = y, stringsAsFactors = FALSE)
# if(!is.null(wts)) out$weights <- wts
# out
# },
# y = y[holdoutIndex],
# wts = wts[holdoutIndex],
# lv = lev)
# if(testing) print(head(predicted))
#
# ## same for the class probabilities
# if(ctrl$classProbs)
# {
# for(k in seq(along = predicted)) predicted[[k]] <- cbind(predicted[[k]], probValues[[k]])
# }
#
# if(ctrl$savePredictions)
# {
#
# tmpPred <- predicted
# for(modIndex in seq(along = tmpPred))
# {
# tmpPred[[modIndex]]$rowIndex <- holdoutIndex
# tmpPred[[modIndex]] <- merge(tmpPred[[modIndex]],
# allParam[modIndex,,drop = FALSE],
# all = TRUE)
# }
# tmpPred <- rbind.fill(tmpPred)
# tmpPred$Resample <- names(resampleIndex)[iter]
# } else tmpPred <- NULL
#
# ## get the performance for this resample for each sub-model
# thisResample <- lapply(predicted,
# ctrl$summaryFunction,
# lev = lev,
# model = method)
# if(testing) print(head(thisResample))
# ## for classification, add the cell counts
# if(length(lev) > 1)
# {
# cells <- lapply(predicted,
# function(x) flatTable(x$pred, x$obs))
# for(ind in seq(along = cells)) thisResample[[ind]] <- c(thisResample[[ind]], cells[[ind]])
# }
# thisResample <- do.call("rbind", thisResample)
# thisResample <- cbind(allParam, thisResample)
#
# } else {
# if(is.factor(y)) predicted <- factor(as.character(predicted), levels = lev)
# tmp <- data.frame(pred = predicted,
# obs = y[holdoutIndex],
# stringsAsFactors = FALSE)
# ## Sometimes the code above does not coerce the first
# ## columnn to be named "pred" so force it
# names(tmp)[1] <- "pred"
# if(!is.null(wts)) tmp$weights <- wts[holdoutIndex]
# if(ctrl$classProbs) tmp <- cbind(tmp, probValues)
#
# if(ctrl$savePredictions)
# {
# tmpPred <- tmp
# tmpPred$rowIndex <- holdoutIndex
# tmpPred <- merge(tmpPred, info$loop[parm,,drop = FALSE],
# all = TRUE)
# tmpPred$Resample <- names(resampleIndex)[iter]
# } else tmpPred <- NULL
#
# ##################################
# thisResample <- ctrl$summaryFunction(tmp,
# lev = lev,
# model = method)
#
# ## if classification, get the confusion matrix
# if(length(lev) > 1) thisResample <- c(thisResample, flatTable(tmp$pred, tmp$obs))
# thisResample <- as.data.frame(t(thisResample))
# thisResample <- cbind(thisResample, info$loop[parm,,drop = FALSE])
#
# }
# thisResample$Resample <- names(resampleIndex)[iter]
#
# if(ctrl$verboseIter) progress(printed[parm,,drop = FALSE],
# names(resampleIndex), iter, FALSE)
# list(resamples = thisResample, pred = tmpPred)
# }
#
# resamples <- rbind.fill(result[names(result) == "resamples"])
# pred <- if(ctrl$savePredictions) rbind.fill(result[names(result) == "pred"]) else NULL
# if(ctrl$method %in% c("boot632"))
# {
# perfNames <- names(ctrl$summaryFunction(data.frame(obs = y, pred = sample(y), weights = 1),
# lev = lev,
# model = method))
# apparent <- subset(resamples, Resample == "AllData")
# apparent <- apparent[,!grepl("^\\.cell|Resample", colnames(apparent)),drop = FALSE]
# names(apparent)[which(names(apparent) %in% perfNames)] <- paste(names(apparent)[which(names(apparent) %in% perfNames)],
# "Apparent", sep = "")
# names(apparent) <- gsub("^\\.", "", names(apparent))
# if(any(!complete.cases(apparent[,!grepl("^cell|Resample", colnames(apparent)),drop = FALSE])))
# {
# warning("There were missing values in the apparent performance measures.")
# }
# resamples <- subset(resamples, Resample != "AllData")
# }
# names(resamples) <- gsub("^\\.", "", names(resamples))
#
# if(any(!complete.cases(resamples[,!grepl("^cell|Resample", colnames(resamples)),drop = FALSE])))
# {
# warning("There were missing values in resampled performance measures.")
# }
#
# out <- ddply(resamples[,!grepl("^cell|Resample", colnames(resamples)),drop = FALSE],
# ## TODO check this for seq models
# gsub("^\\.", "", colnames(info$loop)),
# MeanSD,
# exclude = gsub("^\\.", "", colnames(info$loop)))
#
# if(ctrl$method %in% c("boot632"))
# {
# out <- merge(out, apparent)
# for(p in seq(along = perfNames))
# {
# const <- 1-exp(-1)
# out[, perfNames[p]] <- (const * out[, perfNames[p]]) + ((1-const) * out[, paste(perfNames[p],"Apparent", sep = "")])
# }
# }
#
# list(performance = out, resamples = resamples, predictions = if(ctrl$savePredictions) pred else NULL)
# }
#
# #
# #
# # looTrainWorkflow <- function(x, y, wts, info, method, ppOpts, ctrl, lev, testing = FALSE, ...)
# # {
# # library(caret)
# # loadNamespace("caret")
# #
# # ppp <- list(options = ppOpts)
# # ppp <- c(ppp, ctrl$preProcOptions)
# #
# # printed <- format(info$loop)
# # colnames(printed) <- gsub("^\\.", "", colnames(printed))
# #
# # `%op%` <- getOper(ctrl$allowParallel && getDoParWorkers() > 1)
# #
# # pkgs <- c("methods", "caret")
# # if(!is.null(method$library)) pkgs <- c(pkgs, method$library)
# #
# # result <- foreach(iter = seq(along = ctrl$index), .combine = "rbind", .verbose = FALSE, .packages = pkgs, .errorhandling = "stop") %:%
# # foreach(parm = 1:nrow(info$loop), .combine = "rbind", .verbose = FALSE, .packages = pkgs, .errorhandling = "stop") %op% {
# #
# # if(!(length(ctrl$seeds) == 1 && is.na(ctrl$seeds))) set.seed(ctrl$seeds[[iter]][parm])
# # if(testing) cat("after loops\n")
# # library(caret)
# # if(ctrl$verboseIter) progress(printed[parm,,drop = FALSE],
# # names(ctrl$index), iter, TRUE)
# # if(is.null(info$submodels[[parm]]) || nrow(info$submodels[[parm]]) > 0) {
# # submod <- info$submodels[[parm]]
# # } else submod <- NULL
# #
# # mod <- createModel(x = x[ctrl$index[[iter]],,drop = FALSE ],
# # y = y[ctrl$index[[iter]] ],
# # wts = wts[ctrl$index[[iter]] ],
# # method = method,
# # tuneValue = info$loop[parm,,drop = FALSE],
# # obsLevels = lev,
# # pp = ppp,
# # classProbs = ctrl$classProbs,
# # ...)
# #
# # holdoutIndex <- -unique(ctrl$index[[iter]])
# #
# # predicted <- predictionFunction(method = method,
# # modelFit = mod$fit,
# # newdata = x[-ctrl$index[[iter]],, drop = FALSE],
# # preProc = mod$preProc,
# # param = submod)
# #
# # if(is.numeric(y)) {
# # if(is.logical(ctrl$predictionBounds) && any(ctrl$predictionBounds)) {
# # if(is.list(predicted)) {
# # predicted <- lapply(predicted, trimPredictions,
# # mod_type = "Regression",
# # bounds = ctrl$predictionBounds,
# # limits = ctrl$yLimits)
# # } else {
# # predicted <- trimPredictions(mod_type = "Regression",
# # bounds = ctrl$predictionBounds,
# # limits = ctrl$yLimit,
# # pred = predicted)
# # }
# # } else {
# # if(is.numeric(ctrl$predictionBounds) && any(!is.na(ctrl$predictionBounds))) {
# # if(is.list(predicted)) {
# # predicted <- lapply(predicted, trimPredictions,
# # mod_type = "Regression",
# # bounds = ctrl$predictionBounds,
# # limits = ctrl$yLimits)
# # } else {
# # predicted <- trimPredictions(mod_type = "Regression",
# # bounds = ctrl$predictionBounds,
# # limits = ctrl$yLimit,
# # pred = predicted)
# # }
# # }
# # }
# # }
# #
# # if(testing) print(head(predicted))
# # if(ctrl$classProbs)
# # {
# # probValues <- probFunction(method = method,
# # modelFit = mod$fit,
# # newdata = x[holdoutIndex,, drop = FALSE],
# # preProc = mod$preProc,
# # param = submod)
# # if(testing) print(head(probValues))
# # }
# #
# # ##################################
# #
# # if(!is.null(info$submodels))
# # {
# # ## collate the predictions across all the sub-models
# # predicted <- lapply(predicted,
# # function(x, y, wts, lv) {
# # if(!is.factor(x) & is.character(x)) x <- factor(as.character(x), levels = lv)
# # out <- data.frame(pred = x, obs = y, stringsAsFactors = FALSE)
# # if(!is.null(wts)) out$weights <- wts
# # out
# # },
# # y = y[holdoutIndex],
# # wts = wts[holdoutIndex],
# # lv = lev)
# # if(testing) print(head(predicted))
# #
# # ## same for the class probabilities
# # if(ctrl$classProbs)
# # {
# # for(k in seq(along = predicted)) predicted[[k]] <- cbind(predicted[[k]], probValues[[k]])
# # }
# # predicted <- do.call("rbind", predicted)
# # allParam <- expandParameters(info$loop[parm,,drop = FALSE], submod)
# # rownames(predicted) <- NULL
# # predicted <- cbind(predicted, allParam)
# # ## if saveDetails then save and export 'predicted'
# # } else {
# #
# # if(is.factor(y)) predicted <- factor(as.character(predicted),
# # levels = lev)
# # predicted <- data.frame(pred = predicted,
# # obs = y[holdoutIndex],
# # stringsAsFactors = FALSE)
# # if(!is.null(wts)) predicted$weights <- wts[holdoutIndex]
# # if(ctrl$classProbs) predicted <- cbind(predicted, probValues)
# # predicted <- cbind(predicted, info$loop[parm,,drop = FALSE])
# #
# # }
# # if(ctrl$verboseIter) progress(printed[parm,,drop = FALSE],
# # names(ctrl$index), iter, FALSE)
# # predicted
# # }
# #
# # names(result) <- gsub("^\\.", "", names(result))
# # out <- ddply(result,
# # as.character(method$parameter$parameter),
# # ctrl$summaryFunction,
# # lev = lev,
# # model = method)
# # list(performance = out, predictions = result)
# # }
# #
# # oobTrainWorkflow <- function(x, y, wts, info, method, ppOpts, ctrl, lev, testing = FALSE, ...)
# # {
# # library(caret)
# # ppp <- list(options = ppOpts)
# # ppp <- c(ppp, ctrl$preProcOptions)
# # printed <- format(info$loop)
# # colnames(printed) <- gsub("^\\.", "", colnames(printed))
# # `%op%` <- getOper(ctrl$allowParallel && getDoParWorkers() > 1)
# # pkgs <- c("methods", "caret")
# # if(!is.null(method$library)) pkgs <- c(pkgs, method$library)
# # result <- foreach(parm = 1:nrow(info$loop), .packages = pkgs, .combine = "rbind") %op%
# # {
# # library(caret)
# # if(ctrl$verboseIter) progress(printed[parm,,drop = FALSE], "", 1, TRUE)
# #
# # mod <- createModel(x = x,
# # y = y,
# # wts = wts,
# # method = method,
# # tuneValue = info$loop[parm,,drop = FALSE],
# # obsLevels = lev,
# # pp = ppp,
# # classProbs = ctrl$classProbs,
# # ...)
# #
# # out <- switch(class(mod$fit)[1],
# # randomForest = rfStats(mod$fit),
# # RandomForest = cforestStats(mod$fit),
# # bagEarth =, bagFDA = bagEarthStats(mod$fit),
# # regbagg =, classbagg = ipredStats(mod$fit))
# # if(ctrl$verboseIter) progress(printed[parm,,drop = FALSE], "", 1, FALSE)
# #
# # cbind(as.data.frame(t(out)), info$loop[parm,,drop = FALSE])
# # }
# # names(result) <- gsub("^\\.", "", names(result))
# # result
# # }
# #
# # ################################################################################################
# #
# # nominalSbfWorkflow <- function(x, y, ppOpts, ctrl, lev, ...)
# # {
# # library(caret)
# # ppp <- list(options = ppOpts)
# # ppp <- c(ppp, ctrl$preProcOptions)
# #
# # resampleIndex <- ctrl$index
# # if(ctrl$method %in% c("boot632")){
# # resampleIndex <- c(list("AllData" = rep(0, nrow(x))), resampleIndex)
# # ctrl$indexOut <- c(list("AllData" = rep(0, nrow(x))), ctrl$indexOut)
# # }
# #
# # `%op%` <- getOper(ctrl$allowParallel && getDoParWorkers() > 1)
# # result <- foreach(iter = seq(along = resampleIndex), .combine = "c", .verbose = FALSE, .packages = c("methods", "caret"), .errorhandling = "stop") %op%
# # {
# # if(!(length(ctrl$seeds) == 1 && is.na(ctrl$seeds))) set.seed(ctrl$seeds[iter])
# #
# # library(caret)
# #
# # if(names(resampleIndex)[iter] != "AllData") {
# # modelIndex <- resampleIndex[[iter]]
# # holdoutIndex <- ctrl$indexOut[[iter]]
# # } else {
# # modelIndex <- 1:nrow(x)
# # holdoutIndex <- modelIndex
# # }
# #
# # sbfResults <- sbfIter(x[modelIndex,,drop = FALSE],
# # y[modelIndex],
# # x[holdoutIndex,,drop = FALSE],
# # y[holdoutIndex],
# # ctrl,
# # ...)
# # if(ctrl$saveDetails)
# # {
# # tmpPred <- sbfResults$pred
# # tmpPred$Resample <- names(resampleIndex)[iter]
# # tmpPred$rowIndex <- seq(along = y)[unique(holdoutIndex)]
# # } else tmpPred <- NULL
# # resamples <- ctrl$functions$summary(sbfResults$pred, lev = lev)
# # if(is.factor(y)) resamples <- c(resamples, flatTable(sbfResults$pred$pred, sbfResults$pred$obs))
# # resamples <- data.frame(t(resamples))
# # resamples$Resample <- names(resampleIndex)[iter]
# #
# # list(resamples = resamples, selectedVars = sbfResults$variables, pred = tmpPred)
# # }
# #
# # resamples <- rbind.fill(result[names(result) == "resamples"])
# # pred <- if(ctrl$saveDetails) rbind.fill(result[names(result) == "pred"]) else NULL
# # performance <- MeanSD(resamples[,!grepl("Resample", colnames(resamples)),drop = FALSE])
# #
# # if(ctrl$method %in% c("boot632"))
# # {
# # modelIndex <- 1:nrow(x)
# # holdoutIndex <- modelIndex
# # appResults <- sbfIter(x[modelIndex,,drop = FALSE],
# # y[modelIndex],
# # x[holdoutIndex,,drop = FALSE],
# # y[holdoutIndex],
# # ctrl,
# # ...)
# # apparent <- ctrl$functions$summary(appResults$pred, lev = lev)
# # perfNames <- names(apparent)
# #
# # const <- 1-exp(-1)
# #
# # for(p in seq(along = perfNames))
# # performance[perfNames[p]] <- (const * performance[perfNames[p]]) + ((1-const) * apparent[perfNames[p]])
# #
# # }
# #
# # list(performance = performance, everything = result, predictions = if(ctrl$saveDetails) pred else NULL)
# # }
# #
# #
# # looSbfWorkflow <- function(x, y, ppOpts, ctrl, lev, ...)
# # {
# # library(caret)
# # ppp <- list(options = ppOpts)
# # ppp <- c(ppp, ctrl$preProcOptions)
# #
# # resampleIndex <- ctrl$index
# #
# # vars <- vector(mode = "list", length = length(y))
# #
# # `%op%` <- getOper(ctrl$allowParallel && getDoParWorkers() > 1)
# # result <- foreach(iter = seq(along = resampleIndex), .combine = "c", .verbose = FALSE, .packages = c("methods", "caret"), .errorhandling = "stop") %op%
# # {
# # if(!(length(ctrl$seeds) == 1 && is.na(ctrl$seeds))) set.seed(ctrl$seeds[iter])
# #
# # library(caret)
# #
# # modelIndex <- resampleIndex[[iter]]
# # holdoutIndex <- -unique(resampleIndex[[iter]])
# #
# # sbfResults <- sbfIter(x[modelIndex,,drop = FALSE],
# # y[modelIndex],
# # x[holdoutIndex,,drop = FALSE],
# # y[holdoutIndex],
# # ctrl,
# # ...)
# #
# # sbfResults
# # }
# # resamples <- do.call("rbind", result[names(result) == "pred"])
# # performance <- ctrl$functions$summary(resamples, lev = lev)
# #
# # list(performance = performance, everything = result, predictions = if(ctrl$saveDetails) resamples else NULL)
# # }
# #
# #
# # ################################################################################################
# #
# # nominalRfeWorkflow <- function(x, y, sizes, ppOpts, ctrl, lev, ...)
# # {
# # library(caret)
# # ppp <- list(options = ppOpts)
# # ppp <- c(ppp, ctrl$preProcOptions)
# #
# # resampleIndex <- ctrl$index
# # if(ctrl$method %in% c("boot632")) {
# # resampleIndex <- c(list("AllData" = rep(0, nrow(x))), resampleIndex)
# # ctrl$indexOut <- c(list("AllData" = rep(0, nrow(x))), ctrl$indexOut)
# # }
# #
# # `%op%` <- getOper(ctrl$allowParallel && getDoParWorkers() > 1)
# # result <- foreach(iter = seq(along = resampleIndex), .combine = "c", .verbose = FALSE, .packages = c("methods", "caret", "plyr"), .errorhandling = "stop") %op%
# # {
# # library(caret)
# #
# # if(names(resampleIndex)[iter] != "AllData") {
# # modelIndex <- resampleIndex[[iter]]
# # holdoutIndex <- ctrl$indexOut[[iter]]
# # } else {
# # modelIndex <- 1:nrow(x)
# # holdoutIndex <- modelIndex
# # }
# #
# # seeds <- if(!(length(ctrl$seeds) == 1 && is.na(ctrl$seeds))) ctrl$seeds[[iter]] else NA
# # rfeResults <- rfeIter(x[modelIndex,,drop = FALSE],
# # y[modelIndex],
# # x[holdoutIndex,,drop = FALSE],
# # y[holdoutIndex],
# # sizes,
# # ctrl,
# # label = names(resampleIndex)[iter],
# # seeds = seeds,
# # ...)
# # resamples <- ddply(rfeResults$pred, .(Variables), ctrl$functions$summary, lev = lev)
# #
# # if(ctrl$saveDetails)
# # {
# # rfeResults$pred$Resample <- names(resampleIndex)[iter]
# # ## If the user did not have nrow(x) in 'sizes', rfeIter added it.
# # ## So, we need to find out how many set of predictions there are:
# # nReps <- length(table(rfeResults$pred$Variables))
# # rfeResults$pred$rowIndex <- rep(seq(along = y)[unique(holdoutIndex)], nReps)
# # }
# #
# # if(is.factor(y))
# # {
# # cells <- ddply(rfeResults$pred, .(Variables), function(x) flatTable(x$pred, x$obs))
# # resamples <- merge(resamples, cells)
# # }
# #
# # resamples$Resample <- names(resampleIndex)[iter]
# # vars <- do.call("rbind", rfeResults$finalVariables)
# # vars$Resample <- names(resampleIndex)[iter]
# # list(resamples = resamples, selectedVars = vars, predictions = if(ctrl$saveDetails) rfeResults$pred else NULL)
# # }
# # resamples <- do.call("rbind", result[names(result) == "resamples"])
# # rownames(resamples) <- NULL
# #
# # if(ctrl$method %in% c("boot632"))
# # {
# # perfNames <- names(ctrl$functions$summary(data.frame(obs =y, pred = sample(y)),
# # lev = lev,
# # model = method))
# # apparent <- subset(resamples, Resample == "AllData")
# # apparent <- apparent[,!grepl("^\\.cell|Resample", colnames(apparent)),drop = FALSE]
# # names(apparent)[which(names(apparent) %in% perfNames)] <- paste(names(apparent)[which(names(apparent) %in% perfNames)],
# # "Apparent", sep = "")
# # names(apparent) <- gsub("^\\.", "", names(apparent))
# # resamples <- subset(resamples, Resample != "AllData")
# # }
# #
# # externPerf <- ddply(resamples[,!grepl("\\.cell|Resample", colnames(resamples)),drop = FALSE],
# # .(Variables),
# # MeanSD,
# # exclude = "Variables")
# # if(ctrl$method %in% c("boot632"))
# # {
# # externPerf <- merge(externPerf, apparent)
# # for(p in seq(along = perfNames))
# # {
# # const <- 1-exp(-1)
# # externPerf[, perfNames[p]] <- (const * externPerf[, perfNames[p]]) + ((1-const) * externPerf[, paste(perfNames[p],"Apparent", sep = "")])
# # }
# # externPerf <- externPerf[, !(names(externPerf) %in% paste(perfNames,"Apparent", sep = ""))]
# # }
# # list(performance = externPerf, everything = result)
# # }
# #
# #
# # looRfeWorkflow <- function(x, y, sizes, ppOpts, ctrl, lev, ...)
# # {
# # library(caret)
# # ppp <- list(options = ppOpts)
# # ppp <- c(ppp, ctrl$preProcOptions)
# #
# # resampleIndex <- ctrl$index
# # `%op%` <- getOper(ctrl$allowParallel && getDoParWorkers() > 1)
# # result <- foreach(iter = seq(along = resampleIndex), .combine = "c", .verbose = FALSE, .packages = c("methods", "caret"), .errorhandling = "stop") %op%
# # {
# # library(caret)
# #
# # modelIndex <- resampleIndex[[iter]]
# # holdoutIndex <- -unique(resampleIndex[[iter]])
# #
# # seeds <- if(!(length(ctrl$seeds) == 1 && is.na(ctrl$seeds))) ctrl$seeds[[iter]] else NA
# # rfeResults <- rfeIter(x[modelIndex,,drop = FALSE],
# # y[modelIndex],
# # x[holdoutIndex,,drop = FALSE],
# # y[holdoutIndex],
# # sizes,
# # ctrl,
# # seeds = seeds,
# # ...)
# # rfeResults
# # }
# # preds <- do.call("rbind", result[names(result) == "pred"])
# # resamples <- ddply(preds, .(Variables), ctrl$functions$summary, lev = lev)
# # list(performance = resamples, everything = result)
# # }
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.