caret :: groupKFold和验证/测试

问题描述 投票:1回答:1

这是未知领域,如果问题不明确,请告诉我。

我正试图用随心所欲的随机森林。我有一个大约160个观察数据集,其中60/160是重复测量,因此我需要确保相同的ID(患者)不用于训练和验证。因此我在训练模型之前使用了groupKFold来创建5个折叠。

我无法理解的是,在训练模型后,我在何时使用/选择数据进行实际测试/验证?换句话说,“新数据”在哪里? predict(rf_mod, "??")

folds <- groupKFold(rf_data$id, k = 5)

rf_data <- rf_data %>% select(-id)

fitControl <- trainControl(method = "cv",
                           number = 5,
                           index = folds,
                           search = "random")

rf_mod <- train(cancer ~ ., rf_data,
                method = "rf",
                trControl = fitControl)
r random-forest r-caret
1个回答
0
投票

首先,编写可重现的代码是一种好习惯。我们并没有像您一样坐在相同的数据上......

但是,这个问题相当简单。我建议你看一下?groupKFold文档。你可以看到:“使用createDataPartition创建一系列测试/训练分区”和“groupKFold根据分组因子分割数据”。

在您提供的代码中,您将数据拆分为不同的交叉验证折叠,但随后您将使用培训中的所有数据。通过在使用createDataPartition之前使用groupKFold,您可以使用set.seed(10) train_ind <- createDataPartition(rf_data$cancer, p=0.7, list=FALSE) train_dat <- rf_data[train_ind,] test_dat <- rf_data[!train_ind,] 。通过以下方式保留70%的数据:

qazxswpoi
© www.soinside.com 2019 - 2024. All rights reserved.