【发布时间】:2018-01-09 13:24:48
【问题描述】:
我目前正在尝试使用 caretEnsemble 包构建堆叠模型,使用随机森林和广义提升模型作为基础模型。但是,运行 caretEnsemble 函数后,我不断收到以下错误:
Error in check_caretList_model_types(list_of_models) :
Not yet implemented for multiclass problems
在对该问题进行了一些研究后,我注意到当使用 train() 函数(已经完成)构建模型时,此函数效果最佳,有时取决于训练数据的格式。由于这是作业的一部分,我不会发布数据处理代码,但会提供它的链接 - LINK
这是我试图在其上运行的代码。
training<-read.csv("training.csv")
control<- trainControl(method="repeatedcv", number=10, repeats=3,
savePredictions = TRUE, classProbs = TRUE)
metric<-"Accuracy"
set.seed(5937)
fit1<-caretList(classe~., data=training, trControl=control, metric=metric,
methodList = c("rf", "gbm"))
fit2<-caretEnsemble(fit1)
您能帮我弄清楚这是软件包的技术限制,还是我试图组合不兼容的模型?是否有解决此问题的方法或更好的方法来构建堆叠模型?
非常感谢, 卡姆兰。
更新
到目前为止没有回复,所以让我发布更新。我尝试通过使用广义加法模式以手动方式组合这两个模型。模型与早期代码中的模型相同,验证集可以在这里找到 - LINK:
val<-read.csv("validation.csv")
pred1<- predict(fit1$rf, val)
pred2<-predict(fit1$gbm, val)
predDF<- data.frame(pred1, pred2, classe=val$classe)
fitcomb<-train(classe~., method="gam", data=predDF)
pred3<- predict(fitcomb, predDF)
confusionMatrix(pred3, predDF$classe)
这是我得到的结果: 混淆矩阵和统计数据
Reference
Prediction
A B C D E
A 742 55 88 60 46
B 304 657 553 543 630
C 0 0 0 0 0
D 0 0 0 0 0
E 0 0 0 0 0
由于某种原因,我的模型只识别数据中的两个类,而应该有 5 个。
有人可以帮助我使用这两种方法中的任何一种吗?另外,这是我第一次在这里发布问题 - 如果我能以任何方式提高问题质量,请告诉我。
【问题讨论】:
标签: r random-forest r-caret gbm