插入符:: groupKFold和验证/测试

时间:2018-10-18 07:20:41

标签: r random-forest r-caret

这是未知领域,所以如果问题不清楚,请告诉我。

我正在尝试用插入号适应随机森林。我有大约160个观测值的数据集,其中60/160是重复测量值,因此我需要确保不使用相同的id(患者)进行训练和验证。因此,在训练模型之前,我已使用groupKFold创建5折。

我不明白的是,在训练模型之后,我应该在什么时候使用/选择数据进行实际的测试/验证?换句话说,“ newdata”在哪里? 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)

1 个答案:

答案 0 :(得分:0)

首先,优良作法是编写可复制的代码。我们不会使用与您相同的数据...

但是,这个问题很简单。建议您查看文档?groupKFold。在哪里可以看到:“使用createDataPartition创建了一系列测试/训练分区”,并且“ groupKFold根据分组因子拆分了数据”。

在您提供的代码中,您将数据分为不同的交叉验证折叠,但随后您在训练中使用了 all 数据。通过在使用createDataPartition之前先使用groupKFold,,例如通过以下方式支持您70%的数据:

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,]