首页 > 解决方案 > 如何使用 R 中的多目标模型预测多个目标变量

问题描述

我正在尝试根据表观电导率和表观磁化率属性(aEC 和 aMS)调整 0-10、10-30 和 30-50 厘米深度的实验室测量电导率属性(EC 实验室)的预测模型由 EM38 传感器使用盐水区域中的两个线圈距离(aEC 1 和 0.5 m;aMS 1 和 0.5 m)测量。

由于实验室属性具有空间和深度依赖性,我想执行考虑这种情况的预测模型,为此,我决定采用多输出(目标)建模方法。

我正在使用弹性网络回归方法,并且我正在使用以下代码:

选择目标变量

X <- dados_train %>%  select(CE_0_10,CE_10_30,CE_30_50) %>%  scale(center = F, scale = F) %>% as.matrix()

选择预测变量

Y <-dados_train %>%  select(CE_1_m,CE_0_5_m,SM_1_m,SM_0_5_m) %>% scale(center = F, scale = F) %> as.matrix()

模型构建:弹性网络回归

control <- trainControl(method = "repeatedcv", number = 5, repeats = 5, search = "random", verboseIter = TRUE)

训练弹性网络回归模型

elastic_model_glmnet <- train(CE_0_10+CE_10_30+CE_30_50 ~ .,
                           data = cbind(X, Y),
                           method = "glmnet",
                           preProcess = c("center", "scale"),
                           tuneLength = 25,
                           trControl = control)

我的问题是:如何使用包含 EM38 数据层的堆栈中的三个输出模型进行预测?

为此,我使用以下代码:协变量是一个堆栈对象,其中包含两个距离(1 和 0.5 m)的 4 个 aEC 和 aMS 数据

map_glmnet<-raster::predict(covariates,elastic_model_glmnet,index=c(1:3))

但这并没有为每个目标属性返回一个层(每个深度的 EC 实验室)。

有没有人有什么建议?

标签: rrasterpredictr-raster

解决方案


推荐阅读