1.随机采样sample()—例:iris数据
sample(x, size, replace = FALSE, prob = NULL)
= sample(nrow(iris),size = nrow(iris)*0.8)
Index = iris[Index,] #作为训练集
trian_data = iris[-Index,] #作为测试集 test_data
类似的还有dplyr包中的sample_n
函数 > sample_n(tbl, size, replace = FALSE, weight = NULL, .env = NULL)
2. carte包–createDatePartition 来进行分区抽样
inTrain =createDataPartition(响应变量y ,p=0.8,list=FALSE)
- inTrain : 产生对应数据集行的索引
- y 要分类或预测的变量,
- p 对应y的数据个数的概率
library(caret)
set.seed(2012) #随机种子
=createDataPartition(iris$Species,p=0.8,list=FALSE) # 不知道为何? iris[,5]不能使用
Index = iris[Index,] #作为训练集
trian_data = iris[-Index,] #作为测试集
test_data # 同样用上面第一种方法 产生数据集即可
3. dplyr::sample_frac()函数
sample_frac(tbl, size = 1, replace = FALSE, weight = NULL, .env = NULL)
sample_frac(iris, 0.5, replace = TRUE):随机选取部分数据(占总体的0.5)记录。
library(dplyr)
= sample_frac(iris, 0.8)#这里直接选取了iris数据集中的0.8的部分,假设作为训练集
train_data = setdiff(iris,train_data)#用差集 把test数据挑选出来 test_data
4 . caTools::sample.split()函数
library(caTools)
= sample.split(iris[,5],SplitRatio = 0.8)
Index
= subset(iris,Index==TRUE)
train_data = subset(iris,Index==FALSE) test_data
5. scorecard::split_df()函数
library(scorecard)
= split_df(iris,ratio = 0.8)
data_list = data_list$train
train_data = data_list$test test_data
6. 交叉验证数据
library(caret)
= createFolds(iris$Species,k=10)
folds str(folds)
= iris[-folds$Fold01,]
train=iris[folds$Fold01,] test