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,]#测试集

 方法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)#统计了在每个折叠中,各个字母出现的次数

 

 

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值