这是未知领域,如果问题不明确,请告诉我。
我正试图用随心所欲的随机森林。我有一个大约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)
首先,编写可重现的代码是一种好习惯。我们并没有像您一样坐在相同的数据上......
但是,这个问题相当简单。我建议你看一下?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