基于mlr包的R平均模型预测

基于mlr包的R平均模型预测,r,h2o,mlr,R,H2o,Mlr,是否有办法将mlr中不同模型的多个预测组合成一个平均预测,以便用于计算性能指标等 library(mlr) data(iris) iris2 <- iris iris2$Species <- ifelse(iris$Species=="setosa", "ja", "nein") task = makeClassifTask(data = iris2, target = "Species") lrn = makeLearner("classif.h2o.deeplearning",

是否有办法将mlr中不同模型的多个预测组合成一个平均预测,以便用于计算性能指标等

library(mlr)
data(iris)
iris2 <- iris
iris2$Species <- ifelse(iris$Species=="setosa", "ja", "nein")
task = makeClassifTask(data = iris2, target = "Species")
lrn = makeLearner("classif.h2o.deeplearning", predict.type="prob")
model1 = train(lrn, task)
model2 = train(lrn, task)
pred1 = predict(model1, newdata=iris2)
pred2 = predict(model2, newdata=iris2)
performance(pred1, measures = auc)
g = generateThreshVsPerfData(pred1)
plotThreshVsPerf(g)

有没有一种方法可以在没有变通方法的情况下做到这一点?这种变通方法会有任何不必要的副作用吗?

听起来你在寻找学习者,这是mlr表演合奏的方法

从文件中

 # Regression
  data(BostonHousing, package = "mlbench")
  tsk = makeRegrTask(data = BostonHousing, target = "medv")
  base = c("regr.rpart", "regr.svm")
  lrns = lapply(base, makeLearner)
  m = makeStackedLearner(base.learners = lrns,
    predict.type = "response", method = "average")
  tmp = train(m, tsk)
  res = predict(tmp, tsk)
# Prediction: 506 observations
# predict.type: response
# threshold: 
# time: 0.02
#   id truth response
# 1  1  24.0 27.33742
# 2  2  21.6 22.08853
# 3  3  34.7 33.52007
# 4  4  33.4 32.49923
# 5  5  36.2 32.67973
# 6  6  28.7 22.99323
# ... (506 rows, 3 cols)

performance(res, rmse)
#     rmse 
# 3.138981 

听起来你在寻找。是否也可以使用temp对象仅使用堆栈中的一个学习者进行预测,或者我必须再次单独训练单个学习者?如果我使用相同的方法两次(base=c(“regr.rpart”,“regr.rpart”)),它会抛出一个错误:makeBaseEnsemble中的错误(id=“stack”,base.learners=base.learners,:基本学习者必须都有唯一的id!我怎么做?如果你想多次使用相同的方法,你可以使用打包方法。解决了id问题:我必须手动在学习者中设置id。因此,如果我不想为每个相同的学习者使用数据子集,那么使用b是否更好agging?如果你想多次使用同一个学习者,我会看看bagging。如果你想同时使用其他学习者,你可以在堆叠学习者中使用bagged学习者
 # Regression
  data(BostonHousing, package = "mlbench")
  tsk = makeRegrTask(data = BostonHousing, target = "medv")
  base = c("regr.rpart", "regr.svm")
  lrns = lapply(base, makeLearner)
  m = makeStackedLearner(base.learners = lrns,
    predict.type = "response", method = "average")
  tmp = train(m, tsk)
  res = predict(tmp, tsk)
# Prediction: 506 observations
# predict.type: response
# threshold: 
# time: 0.02
#   id truth response
# 1  1  24.0 27.33742
# 2  2  21.6 22.08853
# 3  3  34.7 33.52007
# 4  4  33.4 32.49923
# 5  5  36.2 32.67973
# 6  6  28.7 22.99323
# ... (506 rows, 3 cols)

performance(res, rmse)
#     rmse 
# 3.138981