这是未知领域,所以如果问题不清楚,请告诉我。
我正在尝试用插入号适应随机森林。我有大约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)
答案 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,]