[英]Ensemble different datasets in R
我正在嘗試使用此處描述的示例來組合來自不同模型的信號。 我有不同的數據集,它們預測相同的輸出。 但是,當我在caretList
組合模型輸出caretList
在一起的信號時,它給出了一個錯誤
Error in check_bestpreds_resamples(modelLibrary) :
Component models do not have the same re-sampling strategies
這是可復制的示例
library(caret)
library(caretEnsemble)
df1 <-
data.frame(x1 = rnorm(200),
x2 = rnorm(200),
y = as.factor(sample(c("Jack", "Jill"), 200, replace = T)))
df2 <-
data.frame(z1 = rnorm(400),
z2 = rnorm(400),
y = as.factor(sample(c("Jack", "Jill"), 400, replace = T)))
library(caret)
check_1 <- train( x = df1[,1:2],y = df1[,3],
method = "nnet",
tuneLength = 10,
trControl = trainControl(method = "cv",
classProbs = TRUE,
savePredictions = T))
check_2 <- train( x = df2[,1:2],y = df2[,3] ,
method = "nnet",
preProcess = c("center", "scale"),
tuneLength = 10,
trControl = trainControl(method = "cv",
classProbs = TRUE,
savePredictions = T))
combine <- c(check_1, check_2)
ens <- caretEnsemble(combine)
首先,您正在嘗試合並在不同訓練數據集上訓練的兩個模型。 那是行不通的。 所有集成模型都需要基於相同的訓練集。 在每個訓練有素的模型中,您將有不同的重采樣集。 因此,您當前的錯誤。
在不使用caretList的情況下構建模型也是很危險的,因為獲得不同的重采樣策略會有很大的變化。 您可以通過使用trainControl中的索引來更好地控制它(請參閱vignette )。
如果使用1個數據集,則可以使用以下代碼:
ctrl <- trainControl(method = "cv",
number = 5,
classProbs = TRUE,
savePredictions = "final")
set.seed(1324)
# will generate the following warning:
# indexes not defined in trControl. Attempting to set them ourselves, so
# each model in the ensemble will have the same resampling indexes.
models <- caretList(x = df1[,1:2],
y = df1[,3] ,
trControl = ctrl,
tuneList = list(
check_1 = caretModelSpec(method = "nnet", tuneLength = 10),
check_2 = caretModelSpec(method = "nnet", tuneLength = 10, preProcess = c("center", "scale"))
))
ens <- caretEnsemble(models)
A glm ensemble of 2 base models: nnet, nnet
Ensemble results:
Generalized Linear Model
200 samples
2 predictor
2 classes: 'Jack', 'Jill'
No pre-processing
Resampling: Bootstrapped (25 reps)
Summary of sample sizes: 200, 200, 200, 200, 200, 200, ...
Resampling results:
Accuracy Kappa
0.5249231 0.04164767
另請閱讀本指南,了解不同的集成策略。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.