如何使用 mlr3 执行空间交叉验证,然后执行栅格预测
How to perform spatial crossvalidation using mlr3 and then perform raster predict
我有以下问题。我想建立一个土地覆盖分类模型。我的数据是具有多个波段的多时相遥感数据。为了进行训练,我创建了分层随机分布的点,以在它们的位置提取光谱数据。使用这些数据,使用 mlr3 包训练了随机 Forrest (Rpart)。对于精度测量,使用 mlr3spatiotempcv 执行了重复的空间交叉验证。训练步骤的结果模型在提取后存储在 rpart 类型的 R 对象中。在这个对象的 terms 字段中是存储的变量名。这些是我使用的所有波段,还有空间 x 和 y 坐标。这在预测新数据时会带来问题。我使用了 terra 包并收到错误消息,我的输入数据中缺少 x 和 y 层。哪一种有意义,因为它们存储在模型的术语字段中。但据我了解,坐标不应该是模型的变量。坐标仅用于空间重采样而不用于预测。我通过在训练过程中删除 x 和 y 坐标并仅执行普通的非空间交叉验证来“解决”这个问题。之后我进行了预测并且它完美运行。
所以,我的问题是,如何使用包含坐标的数据使用 mlr3 包训练模型来执行空间交叉验证?,然后使用该模型预测新的栅格。
您发现了一个错误。当任务是从 data.frame
而不是 sf
对象创建时,coords_as_features
设置为 TRUE
。默认值应为 FALSE
。您可以使用 remotes::install_github("mlr-org/mlr3spatiotempcv")
安装固定版本的软件包。此修复程序应该很快包含在下一个 CRAN 版本中。感谢报告。
This brings problems when predicting new data.
为什么使用重采样模型来预测新数据?通常,您使用(空间)交叉验证来估计最终模型的性能,但预测新数据的最终模型适用于完整的数据集。
我有以下问题。我想建立一个土地覆盖分类模型。我的数据是具有多个波段的多时相遥感数据。为了进行训练,我创建了分层随机分布的点,以在它们的位置提取光谱数据。使用这些数据,使用 mlr3 包训练了随机 Forrest (Rpart)。对于精度测量,使用 mlr3spatiotempcv 执行了重复的空间交叉验证。训练步骤的结果模型在提取后存储在 rpart 类型的 R 对象中。在这个对象的 terms 字段中是存储的变量名。这些是我使用的所有波段,还有空间 x 和 y 坐标。这在预测新数据时会带来问题。我使用了 terra 包并收到错误消息,我的输入数据中缺少 x 和 y 层。哪一种有意义,因为它们存储在模型的术语字段中。但据我了解,坐标不应该是模型的变量。坐标仅用于空间重采样而不用于预测。我通过在训练过程中删除 x 和 y 坐标并仅执行普通的非空间交叉验证来“解决”这个问题。之后我进行了预测并且它完美运行。
所以,我的问题是,如何使用包含坐标的数据使用 mlr3 包训练模型来执行空间交叉验证?,然后使用该模型预测新的栅格。
您发现了一个错误。当任务是从 data.frame
而不是 sf
对象创建时,coords_as_features
设置为 TRUE
。默认值应为 FALSE
。您可以使用 remotes::install_github("mlr-org/mlr3spatiotempcv")
安装固定版本的软件包。此修复程序应该很快包含在下一个 CRAN 版本中。感谢报告。
This brings problems when predicting new data.
为什么使用重采样模型来预测新数据?通常,您使用(空间)交叉验证来估计最终模型的性能,但预测新数据的最终模型适用于完整的数据集。