在模型训练之前,要首先划分训练集与测试集,如何对原始数据集进行训练集与测试集的划分?训练集与测试集的比例各占多少?如何保证各自内部标签分布平衡都会影响模型训练的最终效果。
好在R和Python中有现成的数据集分割函数,避免手动写函数导致划分比例不合理、训练集与测试集的样本的结构与总体不均衡的问题。
R语言中caTools包中的sample.split函数可以用来自动将原始数据集分割成训练集和测试集。
方法一——caTools中的sample.split函数
library("caTools")
set.seed(123)
data(iris)
table(iris$Species)
setosa versicolor virginica
50 50 50
split = sample.split(iris$Species,SplitRatio = .8)
train_data = subset(iris,split == TRUE)
test_data = subset(iris,split == FALSE)
table(train_data$Species)
setosa versicolor virginica
40 40 40
table(test_data$Species)
setosa versicolor virginica
10 10 10
划分方法二——createDataPartition函数
library("caret")
split1
train_data
table(train_data$Spec