如何在R中堆叠机器学习模型
我是机器学习和R的新手 我知道有一个名为的R包,它可以方便地将模型堆叠在R中。但是,这个包看起来有 暂时,我编写了一些代码来尝试手动堆叠模型,下面是我处理的示例:如何在R中堆叠机器学习模型,r,machine-learning,ensemble-learning,R,Machine Learning,Ensemble Learning,我是机器学习和R的新手 我知道有一个名为的R包,它可以方便地将模型堆叠在R中。但是,这个包看起来有 暂时,我编写了一些代码来尝试手动堆叠模型,下面是我处理的示例: library(caret) set.seed(123) library(AppliedPredictiveModeling) data(AlzheimerDisease) adData = data.frame(diagnosis, predictors) inTrain = crea
library(caret)
set.seed(123)
library(AppliedPredictiveModeling)
data(AlzheimerDisease)
adData = data.frame(diagnosis, predictors)
inTrain = createDataPartition(adData$diagnosis, p = 3 / 4)[[1]]
training = adData[inTrain,]
testing = adData[-inTrain,]
set.seed(62433)
modelFitRF <- train(diagnosis ~ ., data = training, method = "rf")
modelFitGBM <- train(diagnosis ~ ., data = training, method = "gbm",verbose=F)
modelFitLDA <- train(diagnosis ~ ., data = training, method = "lda")
predRF <- predict(modelFitRF,newdata=testing)
predGBM <- predict(modelFitGBM, newdata = testing)
prefLDA <- predict(modelFitLDA, newdata = testing)
confusionMatrix(predRF, testing$diagnosis)$overall[1]
#Accuracy
#0.7682927
confusionMatrix(predGBM, testing$diagnosis)$overall[1]
#Accuracy
#0.7926829
confusionMatrix(prefLDA, testing$diagnosis)$overall[1]
#Accuracy
#0.7682927
然后,我只是使用这样的数据帧作为新的列车集
来创建一个堆叠模型:
modelStack <- train(diagnosis ~ ., data = predDF, method = "rf")
combPred <- predict(modelStack, predDF)
confusionMatrix(combPred, testing$diagnosis)$overall[1]
#Accuracy
#0.804878
您可以将predDF分为一个验证集(在其上进行堆叠)和最终测试集(在其上进行样本外预测)。不要在整个predDF上叠加,因为您的模型不应该以任何方式依赖于最终的测试集。您好@raymkchow,您的意思是:我可以将predDF分为验证集和测试集,并将三个模型和叠加模型应用于验证集,以查看结果并与这些结果进行比较,以找到最佳模型。下一步,我可以把最好的模型应用到测试集中去做样本外预测,对吗?是的,你是对的。我们可以选择最好的模型,也可以将这三个模型(基础模型)组合成更好的模型。您可以将predDF分为验证集(在上面进行叠加)和最终测试集(在上面进行样本外预测)。不要在整个predDF上叠加,因为您的模型不应该以任何方式依赖于最终的测试集。您好@raymkchow,您的意思是:我可以将predDF分为验证集和测试集,并将三个模型和叠加模型应用于验证集,以查看结果并与这些结果进行比较,以找到最佳模型。下一步,我可以把最好的模型应用到测试集中去做样本外预测,对吗?是的,你是对的。我们可以选择最好的模型,或者将这三个模型(基础模型)组合成更好的模型。
modelStack <- train(diagnosis ~ ., data = predDF, method = "rf")
combPred <- predict(modelStack, predDF)
confusionMatrix(combPred, testing$diagnosis)$overall[1]
#Accuracy
#0.804878
predDF <- data.frame(predRF, predGBM, prefLDA, diagnosis = testing$diagnosis, stringsAsFactors = F)
modelStack <- train(diagnosis ~ ., data = predDF, method = "rf")
combPred <- predict(modelStack, predDF)
confusionMatrix(combPred, testing$diagnosis)$overall[1]