本文将就caret包中的数据分割部分进行介绍学习。主要包括如下函数:createDataPartition(),maxDissim(),createTimeSlices(),createFolds(),createResample(),groupKFold()等html
createDataPartition函数用于建立平衡数据的分割。若是函数中的参数y是一个因子向量,则对每一类随机抽样,而且保持数据总体类别的分类。git
createDataPartition(y, times = 1, p = 0.5, list = TRUE, groups = min(5, length(y))) github
函数maxDissim应用最大相异方法(maximum dissimiarity approach)建立子样本。假设有一个m个样本的数据集A和具备n个样本的一个大数据集B。咱们但愿从B中抽取和A不一样的子样本。为了这样作,对于B中的每个样本,函数计算与A中每同样本点的相异性。把B中最大相异性的点加到A并继续。注意,计算相异性时,要加载proxy包app
maxDissim(a, b, n = 2, obj = minDiss, useNames = FALSE, randomFrac = 1, verbose = FALSE, ...) dom
时间序列简单随机抽样并非对时间序列抽样的最好的方法。Hyndman和Athanasopoulos(2013)讨论了rolling forecasting origin技术。caret包 包含了createTimeSlices函数,它能建立这种类型的切片。函数
createTimeSlices(y, initialWindow, horizon = 1, fixedWindow = TRUE, skip = 0) 学习
horizon参数值不一样时的情形:horizon分别为1,3时,测试样本的数量分别为1,3测试
fixedWindow分别为TRUE和FALSE时的情形,可见为false时,训练样本老是从头开始。大数据
skip参数,注意skip为3时,不一样训练样本的第一个索引依次加4spa
此外,在制造训练集时,还有如下可能用到的函数
一、 createFolds(y, k = 10, list = TRUE, returnTrain = FALSE)
其中,k是folds的数目,list,是否以列表形式返回,returnTrain,false时返回的是测试集的索引,true时返回的是训练集的索引(仅当list=TRUE时,returnTrain=TRUE才有效)
二、 createResample(data,k)
其中,k是建立训练样本的个数
三、 groupKFold(group, k = length(unique(group)))
其中,k是folds的数目
参考:http://topepo.github.io/caret/data-splitting.html (其中文翻译见)