【发布时间】:2019-11-22 00:44:58
【问题描述】:
我看到很多 R 代码首先将完整的数据集拆分为训练集和测试集:
library(caret)
library(klaR)
# load the iris dataset
data(iris)
# define a 80%/20% train/test split of the dataset
trainIndex <- createDataPartition(iris$Species, p=0.8, list=FALSE)
data_train <- iris[trainIndex,]
data_test <- iris[-trainIndex,]
第二次定义分区方法,如重复k-fold交叉验证:
train_control <- trainControl(method="repeatedcv", number=10, repeats=3)
然后使用训练集训练一个模型:
my_model <- train(Species~., data=data_train, trControl=train_control, method="nb")
最后在测试集上进行预测:
pred_results <- predict(my_model, newdata=data_test)
当专门使用(重复的)k 折交叉验证方法时,在我看来,训练(n=k-1 折)和测试(n=1 折)集已经固有地定义了。
在这种情况下,为什么要通过首先将整个数据集分成 80% 的训练集和 20% 的测试集来添加额外的分区层?有必要吗?
【问题讨论】: