R语言拆分测试集和训练集(1)

 方法1:sample

#拆分数据集
#生成模拟数据集
set.seed(5)
data_mo<-data.frame(a1=rnorm(20,30,5),
                    a2=rgamma(20,50,10),
                    a3=rnorm(20,13,4),
                    row.names = 1:20)
#1 使用sample
set.seed(1)
index<-sample(nrow(data_mo),nrow(data_mo)*0.7)
index
train<-data_mo[index,]#训练集
test<-data_mo[-index,]#测试集

R语言拆分测试集和训练集(1)_第1张图片

 方法2:createDataPartition

#2 使用caret
library(caret)
#createDataPartition产生一系列测试和训练部分
cre_data<-createDataPartition(data_mo$a3,#结局向量
                              times=2,#分区数
                              p=0.5,#训练数据的比例
                              list=T,#list 或者 matrix
                              groups=2)#将结局分成两组,每组抽取按比例抽取样本,0.5*10/2
cre_data#不难发现这种分组方法得到的结果,每组存在相同的样本。
#训练集和测试集
cre_index<-createDataPartition(data_mo$a3,#结局向量
                               p=0.5,#训练数据的比例
                               list=F,#list 或者 matrix
                               groups=2)#将结局分成两组,每组抽取按比例抽取样本,0.5*10/2
cre_train<-data_mo[cre_index,]
cre_test<-data_mo[-cre_index,]
#createResample产生1个或多个重抽样的样本,所以结果会有重复
createResample(data_mo$a3, times = 3, list = TRUE)     
#createFolds将数据拆分成k组
set.seed(1)
createFolds(data_mo$a3, k = 3, list = TRUE, 
            returnTrain = T)#如果为true,则返回的值中Flod1是与训练期间使用的数据相对应的样本位置。此参数仅与list=TRUE一起使用
#createTimeSlices实现交叉验证                     
createTimeSlices(data_mo$a3, 
                 initialWindow=4, #每个训练集样本中连续值的初始数量
                 horizon = 1,#每个测试集样本中的连续值数量
                 fixedWindow = TRUE,#逻辑,如果为FALSE,则所有训练样本从1开始
                 skip = 0)#整数,要跳过多少(如果有的话)的重采样以精简总量
#groupKFold拆分数据集根据分组因素
set.seed(131)
groups <- sort(sample(letters[1:4], size = 20, replace = TRUE))
table(groups)
folds <- groupKFold(groups,k=3)#k折交叉验证
lapply(folds, function(x, y) table(y[x]), y = groups)#统计了在每个折叠中,各个字母出现的次数

R语言拆分测试集和训练集(1)_第2张图片

 R语言拆分测试集和训练集(1)_第3张图片

 

你可能感兴趣的:(常用方法,r语言)