在对数据进行建模的过程中,为了评估模型预测准确性。需要将原始数据划分成训练集和测试集两部分(若数据量足够大,也可以划分为训练集,验证集和测试集三部分)。其中训练集用于训练模型(学习器),测试集用于评估模型优劣性。本文总结了几种数据分割的方法,供大家交流学习。
测试集与训练集的比例没有统一规定,一般视样本量的多少训练集与测试集划分比例为3:1-4:1。
这里我按数据类型是否包含因子类型分成两种类型讨论。这是因为含有因子变量的数据需要分层抽样才能保证训练集和测试集中都含有该因子的所有水平。如果训练集中含有某水平,测试集中不含有该水平,那么预测的时候就会出错。
1.纯数值型数据类型的分割-随机采样
纯数值型数据类型分割时可以采用随机抽样进行分割。这里我们采用R自带的iris数据集。
#加载数据
data(iris)
head(iris)
#去掉Species项,因为该项为因子型
iris.removeSpecies=iris[,!names(iris)%in%c("Species")]
此图为了展示iris部分全貌,没有去掉Species项,不要弄错了。
方法一:
#有放回的从x中(即1和2)选择size个数据,选择1的概率为0.8,选择2的概率为0.2,
#并返回由1,2组成的向量
ince=sample(x=2,size=nrow(iris.removeSpecies),replace=TRUE,prob=c(0.8,0.2))
table(ince)
trainset