我有以下问题。我想建立一个土地覆盖分类模型。我的数据是具有几个波段的多时相遥感数据。为了训练,我创建了分层随机分布的点,以提取它们所在位置的光谱数据。用这些数据建立了随机森林模型。为了准确性测量,使用mlr3spatiotempcv进行重复的空间交叉验证。训练步骤的结果模型在提取之后是,存储在类型为rpart的R对象中。在该对象的terms字段中存储的是变量名。这些是我使用的所有波段,还有空间x和y坐标。这在预测新数据时会带来问题。我使用terra包,得到一个错误,输入数据中缺少x和y图层。这是有道理的,因为它们存储在模型的术语字段中,但据我所知,坐标不应该是模型的变量。坐标只用于空间重采样而不用于预测。我通过在训练过程中删除x和y坐标并只执行普通的非空间交叉验证来“解决”这个问题。在那之后,我进行了预测,它工作得很完美。
因此,我的问题是,如何使用mlr3包使用包含坐标的数据训练模型以执行空间交叉验证?然后使用此模型预测新栅格。
1条答案
按热度按时间inn6fuwd1#
您发现了一个错误。当从
data.frame
而不是sf
对象创建任务时,coords_as_features
将设置为TRUE
。默认值应为FALSE
。您可以使用remotes::install_github("mlr-org/mlr3spatiotempcv")
安装该包的修复版本。此修复程序将很快包含在下一个CRAN版本中。感谢您的报告。这在预测新数据时带来了问题。
为什么要使用重采样的模型来预测新数据?通常,您使用(空间)交叉验证来估计最终模型的性能,但用于预测新数据的最终模型是在完整数据集上拟合的。