首页 文章

R插入包:在trainControl之前将数据划分为训练/测试集?

提问于
浏览
0

我看到很多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折交叉验证:

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%测试集来添加额外的分区层?有必要吗?

1 回答

  • 1

    在统计学习导论的第2.2章中,可用here

    一般而言,我们并不关心该方法对训练数据的训练效果如何 . 相反,我们感兴趣的是当我们将方法应用于以前看不见的测试数据时我们获得的预测的准确性

    阅读整章,包括偏差/差异权衡 .

    tldr;您需要在看不见的数据上测试训练有素的算法,以了解它的执行情况 . 如果您将测试数据包含在培训中(10倍或不高),您的算法已经看到了这些情况 . 你对自己的预测过于自信 .

相关问题