R 中的多栅格随机森林

Multi Raster Random Forest in R

我正在尝试在 R 中设置一个 randomForest 以 class根据其他光栅图像验证光栅图像。我的训练数据是一个完全填充的栅格图像,我想训练许多其他栅格以尝试创建基于初始栅格的栅格输出。代码示例如下:

rf1 <- randomForest(trainingRaster1 ~ raster1 + raster2 + raster3)

...其中 trainingRaster1 是我的光栅格式的实际已知值,raster1rasterN 是我想用来预测什么的其他光栅图像 trainingRaster1 是。我知道您要使用矢量或点的训练 class 来训练一系列栅格,但就我而言,我想使用栅格作为训练 class 来生成输出栅格(因为我有一个完全填充的栅格图像,可以在其中训练其他栅格)。我的问题是:这可能吗?我可以使用栅格来训练我的其他栅格数据集吗?我可以使用多个栅格数据集作为输入变量吗?公式会是什么样子?我是否需要将所有数据网格化到相同的范围和分辨率?我真的很想在 R 中使用 randomForest,但是有不同的方法吗?示例代码是什么样的?最后,一旦 运行,我将如何使用该模型在不输入训练数据集的情况下创建栅格?非常感谢你提前。我已经阅读并观看了 randomForest 的示例,但没有看到它以我想要的方式使用。我想知道它是否需要偏离正常用例。

栅格单元只是数据点。所以如果(或一次)他们排成一行(相同的范围和分辨率),你可以做

示例数据

library(raster)
# predictors
logo <- stack(system.file("external/rlogo.grd", package="raster"))
# generate "known values"
set.seed(1)
obs <- sqrt(sum(logo)) + sample(ncell(logo))/500
names(obs) <- "obs"

拟合模型

s <- stack(obs, logo)
d <- as.data.frame(s)
library(randomForest)
m <- randomForest(obs~., d, ntree=50)

预测

p <- predict(s, m)
names(p) <- "pred"
plot(stack(obs, p))

注意图像是如何改进的。

predict 步骤中,您可以将 s 替换为另一组具有相同名称的预测变量数据。所以你可以根据一年的数据拟合你的模型,你有预测变量(例如卫星或气候数据)和观察结果(例如作物产量),但是你可以预测另一年,你有预测变量,而不是感兴趣的观察结果。

您可能无法执行此操作,因为栅格数据对于 RAM 来说太大了。在这种情况下,您可以取样,或在子集上创建多个模型。