详解R语言caret包trainControl函数

目录
  • trainControl参数详解
    • 源码
    • 参数详解
    • 示例

trainControl参数详解

源码

caret::trainControl <-
function (method = "boot", number = ifelse(grepl("cv", method), 10, 25), repeats = ifelse(grepl("[d_]cv$", method), 1, NA), p = 0.75, search = "grid", initialWindow = NULL,  horizon = 1, fixedWindow = TRUE, skip = 0, verboseIter = FALSE, returnData = TRUE, returnResamp = "final", savePredictions = FALSE,
    classProbs = FALSE, summaryFunction = defaultSummary, selectionFunction = "best",
    preProcOptions = list(thresh = 0.95, ICAcomp = 3, k = 5,
        freqCut = 95/5, uniqueCut = 10, cutoff = 0.9), sampling = NULL,
    index = NULL, indexOut = NULL, indexFinal = NULL, timingSamps = 0,
    predictionBounds = rep(FALSE, 2), seeds = NA, adaptive = list(min = 5,
        alpha = 0.05, method = "gls", complete = TRUE),
    trim = FALSE, allowParallel = TRUE)
{
    if (is.null(selectionFunction))
        stop("null selectionFunction values not allowed")
    if (!(returnResamp %in% c("all", "final", "none")))
        stop("incorrect value of returnResamp")
    if (length(predictionBounds) > 0 && length(predictionBounds) !=
        2)
        stop("'predictionBounds' should be a logical or numeric vector of length 2")
    if (any(names(preProcOptions) == "method"))
        stop("'method' cannot be specified here")
    if (any(names(preProcOptions) == "x"))
        stop("'x' cannot be specified here")
    if (!is.na(repeats) & !(method %in% c("repeatedcv",
        "adaptive_cv")))
        warning("`repeats` has no meaning for this resampling method.",
            call. = FALSE)
    if (!(adaptive$method %in% c("gls", "BT")))
        stop("incorrect value of adaptive$method")
    if (adaptive$alpha < 1e-07 | adaptive$alpha > 1)
        stop("incorrect value of adaptive$alpha")
    if (grepl("adapt", method)) {
        num <- if (method == "adaptive_cv")
            number * repeats
        else number
        if (adaptive$min >= num)
            stop(paste("adaptive$min should be less than",
                num))
        if (adaptive$min <= 1)
            stop("adaptive$min should be greater than 1")
    }
    if (!(search %in% c("grid", "random")))
        stop("`search` should be either 'grid' or 'random'")
    if (method == "oob" & any(names(match.call()) == "summaryFunction")) {
        warning("Custom summary measures cannot be computed for out-of-bag resampling. ",
            "This value of `summaryFunction` will be ignored.",
            call. = FALSE)
    }
    list(method = method, number = number, repeats = repeats,
        search = search, p = p, initialWindow = initialWindow,
        horizon = horizon, fixedWindow = fixedWindow, skip = skip,
        verboseIter = verboseIter, returnData = returnData, returnResamp = returnResamp,
        savePredictions = savePredictions, classProbs = classProbs,
        summaryFunction = summaryFunction, selectionFunction = selectionFunction,
        preProcOptions = preProcOptions, sampling = sampling,
        index = index, indexOut = indexOut, indexFinal = indexFinal,
        timingSamps = timingSamps, predictionBounds = predictionBounds,
        seeds = seeds, adaptive = adaptive, trim = trim, allowParallel = allowParallel)
}

参数详解

trainControl 所有参数详解
method 重抽样方法:Bootstrap(有放回随机抽样)Bootstrap632(有放回随机抽样扩展)LOOCV(留一交叉验证)LGOCV(蒙特卡罗交叉验证)cv(k折交叉验证)repeatedcv(重复的k折交叉验证)optimism_boot(Efron, B., & Tibshirani, R. J. (1994). “An introduction to the bootstrap”, pages 249-252. CRC press.)none(仅使用一个训练集拟合模型)oob(袋外估计:随机森林、多元自适应回归样条、树模型、灵活判别分析、条件树)
number 控制K折交叉验证的数目或者Bootstrap和LGOCV的抽样迭代次数
repeats 控制重复交叉验证的次数
p LGOCV:控制训练比例
verboseIter 输出训练日志的逻辑变量
returnData 逻辑变量,把数据保存到trainingData中(str(trainControl)查看)
search search = grid(网格搜索)random(随机搜索)
returnResamp 包含以下值的字符串:final、all、none,设定有多少抽样性能度量被保存。
classProbs 是否计算类别概率
summaryFunction 根据重抽样计算模型性能的函数
selectionFunction 选择最优参数的函数
index 指定重抽样样本(使用相同的重抽样样本评估不同的算法、模型)
allowParallel 是否允许并行

示例

library(mlbench) #使用包中的数据
Warning message:
程辑包‘mlbench'是用R版本4.1.3 来建造的
> data(Sonar)
> str(Sonar[, 1:10])
'data.frame':   208 obs. of  10 variables:
 $ V1 : num  0.02 0.0453 0.0262 0.01 0.0762 0.0286 0.0317 0.0519 0.0223 0.0164 ...
 $ V2 : num  0.0371 0.0523 0.0582 0.0171 0.0666 0.0453 0.0956 0.0548 0.0375 0.0173 ...
 $ V3 : num  0.0428 0.0843 0.1099 0.0623 0.0481 ...
 $ V4 : num  0.0207 0.0689 0.1083 0.0205 0.0394 ...
 $ V5 : num  0.0954 0.1183 0.0974 0.0205 0.059 ...
 $ V6 : num  0.0986 0.2583 0.228 0.0368 0.0649 ...
 $ V7 : num  0.154 0.216 0.243 0.11 0.121 ...
 $ V8 : num  0.16 0.348 0.377 0.128 0.247 ...
 $ V9 : num  0.3109 0.3337 0.5598 0.0598 0.3564 ...
 $ V10: num  0.211 0.287 0.619 0.126 0.446 ...

数据分割:

library(caret)
set.seed(998)
inTraining <- createDataPartition(Sonar$Class, p = .75, list = FALSE)
training <- Sonar[ inTraining,] #训练集
testing  <- Sonar[-inTraining,] #测试集

模型拟合:

fitControl <- trainControl(## 10折交叉验证
                           method = "repeatedcv",
                           number = 10,
                           ## 重复10次
                           repeats = 1)

set.seed(825)
gbmFit1 <- train(Class ~ ., data = training,
                 method = "gbm", # 助推树
                 trControl = fitControl,
                 verbose = FALSE)
gbmFit1
Stochastic Gradient Boosting 

157 samples
 60 predictor
  2 classes: 'M', 'R' 

No pre-processing
Resampling: Cross-Validated (10 fold, repeated 10 times)
Summary of sample sizes: 141, 142, 141, 142, 141, 142, ...
Resampling results across tuning parameters:

  interaction.depth  n.trees  Accuracy   Kappa
  1                   50      0.7935784  0.5797839
  1                  100      0.8171078  0.6290208
  1                  150      0.8219608  0.6383173
  2                   50      0.8041912  0.6027771
  2                  100      0.8296176  0.6544713
  2                  150      0.8283627  0.6520181
  3                   50      0.8110343  0.6170317
  3                  100      0.8301275  0.6551379
  3                  150      0.8310343  0.6577252

Tuning parameter 'shrinkage' was held constant at a value of 0.1

Tuning parameter 'n.minobsinnode' was held constant at a value of 10
Accuracy was used to select the optimal model using the largest value.
The final values used for the model were n.trees = 150, interaction.depth
 = 3, shrinkage = 0.1 and n.minobsinnode = 10.

到此这篇关于R语言caret包trainControl函数详解的文章就介绍到这了,更多相关R语言caret包trainControl函数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • R语言利用caret包比较ROC曲线的操作

    说明 我们之前探讨了多种算法,每种算法都有优缺点,因而当我们针对具体问题去判断选择那种算法时,必须对不同的预测模型进行重做评估. 为了简化这个过程,我们使用caret包来生成并比较不同的模型与性能. 操作 加载对应的包与将训练控制算法设置为10折交叉验证,重复次数为3: library(ROCR) library(e1071) library("pROC") library(caret) library("pROC") control = trainControl(

  • 详解R语言caret包trainControl函数

    目录 trainControl参数详解 源码 参数详解 示例 trainControl参数详解 源码 caret::trainControl <- function (method = "boot", number = ifelse(grepl("cv", method), 10, 25), repeats = ifelse(grepl("[d_]cv$", method), 1, NA), p = 0.75, search = "

  • 详解R语言中生存分析模型与时间依赖性ROC曲线可视化

    R语言简介 R是用于统计分析.绘图的语言和操作环境.R是属于GNU系统的一个自由.免费.源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具. 人们通常使用接收者操作特征曲线(ROC)进行二元结果逻辑回归.但是,流行病学研究中感兴趣的结果通常是事件发生时间.使用随时间变化的时间依赖性ROC可以更全面地描述这种情况下的预测模型. 时间依赖性ROC定义 令 Mi为用于死亡率预测的基线(时间0)标量标记. 当随时间推移观察到结果时,其预测性能取决于评估时间 t.直观地说,在零时间测量的标记值应该

  • 详解R语言数据合并一行代码搞定

    数据的合并 需要的函数 cbind(),rbind(),bind_rows(),merge() 准备数据 我们先构造一组数据,以便下面的演示 > data1<-data.frame( + namea=c("海波","立波","秀波"), + value=c("一波","接","一波") + ) > data1 namea value 1 海波 一波 2 立波 接 3 秀

  • 详解R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

    在标准线性模型中,我们假设 .当线性假设无法满足时,可以考虑使用其他方法. 多项式回归 扩展可能是假设某些多项式函数, 同样,在标准线性模型方法(使用GLM的条件正态分布)中,参数  可以使用最小二乘法获得,其中  在  . 即使此多项式模型不是真正的多项式模型,也可能仍然是一个很好的近似值 .实际上,根据 Stone-Weierstrass定理,如果  在某个区间上是连续的,则有一个统一的近似值  ,通过多项式函数. 仅作说明,请考虑以下数据集 db = data.frame(x=xr,y=y

  • 详解R语言中的表达式、数学公式、特殊符号

      在R语言的绘图函数中,如果文本参数是合法的R语言表达式,那么这个表达式就被用Tex类似的规则进行文本格式化. y <- function(x) (exp(-(x^2)/2))/sqrt(2*pi) plot(y, -5, 5, main = expression(f(x) == frac(1,sqrt(2*pi))*e^(-frac(x^2,2))), lwd = 3, col = "blue") library(ggplot2) x <- seq(0, 2*pi, b

  • 详解R语言实现前向逐步回归(前向选择模型)

    目录 前向逐步回归原理 数据导入并分组 导入数据 特征与标签分开存放 前向逐步回归构建输出特征集合 从空开始一次创建属性列表 模型效果评估 前向逐步回归原理 前向逐步回归的过程是:遍历属性的一列子集,选择使模型效果最好的那一列属性.接着寻找与其组合效果最好的第二列属性,而不是遍历所有的两列子集.以此类推,每次遍历时,子集都包含上一次遍历得到的最优子集.这样,每次遍历都会选择一个新的属性添加到特征集合中,直至特征集合中特征个数不能再增加. 数据导入并分组 导入数据,将数据集抽取70%作为训练集,剩

  • 详解R语言plot函数参数合集

    最近用R语言画图,plot 函数是用的最多的函数,而他的参数非常繁多,由此总结一下,以供后续方便查阅. plot(x, y = NULL, type = "p", xlim = NULL, ylim = NULL, log = "", main = NULL, sub = NULL, xlab = NULL, ylab = NULL, ann = par("ann"), axes = TRUE, frame.plot = axes, panel.

  • 详解R语言图像处理EBImage包

    目录 什么是EBImage 1. 图像读取与保存 2.色彩管理 3.图像处理 4.空间变换 5.形态运算 6.图像分割 本文摘自<Keras深度学习:入门.实战及进阶>第四章部分章节. 什么是EBImage EBImage是R的一个扩展包,提供了用于读取.写入.处理和分析图像的通用功能,非常容易上手.EBImage包在Bioconductor中,通过以下命令进行安装. install.packages("BiocManager") BiocManager::install(

  • 详解R语言MCMC:Metropolis-Hastings采样用于回归的贝叶斯估计

    MCMC是从复杂概率模型中采样的通用技术. 蒙特卡洛 马尔可夫链 Metropolis-Hastings算法 问题 如果需要计算有复杂后验pdf p(θ| y)的随机变量θ的函数f(θ)的平均值或期望值. 您可能需要计算后验概率分布p(θ)的最大值. 解决期望值的一种方法是从p(θ)绘制N个随机样本,当N足够大时,我们可以通过以下公式逼近期望值或最大值 将相同的策略应用于通过从p(θ| y)采样并取样本集中的最大值来找到argmaxp(θ| y). 解决方法 1.1直接模拟 1.2逆CDF 1.

  • 详解C语言编程中的函数指针以及函数回调

    函数指针: 就是存储函数地址的指针,就是指向函数的指针,就是指针存储的值是函数地址,我们可以通过指针可以调用函数. 我们先来定义一个简单的函数: //定义这样一个函数 void easyFunc() { printf("I'm a easy Function\n"); } //声明一个函数 void easyFunc(); //调用函数 easyFunc(); //定义这样一个函数 void easyFunc() { printf("I'm a easy Function\n

随机推荐