【问题标题】:Multi Raster Random Forest in RR中的多栅格随机森林
【发布时间】:2021-03-27 09:33:00
【问题描述】:

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

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

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

【问题讨论】:

    标签: r tensorflow gis random-forest


    【解决方案1】:

    栅格单元只是数据点。因此,如果(或一次)它们对齐(相同的范围和分辨率),您可以这样做

    示例数据

    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 来说太大了。在这种情况下,您可以取样,或在子集上创建多个模型。

    【讨论】:

    • 感谢罗伯特的回复。我有两个问题:训练随机森林后是否可以使用空白数据框作为obs 变量?我的意思是,假设我有一个完整的训练数据集用作obs 一年,以及一系列我想用作预测数据的其他数据集。下一年的训练数据不可用。如果我只有一个空白的obs 数据框并完成'd 数据集,或者在这种情况下是logo,我可以使用随机森林来填充数据框吗?另外,如果我确实有多年数据,我可以重复这一点并增加 RF 的稳健性吗?
    • 我已经是您问题的第一部分,但我已经将答案扩展为-希望-更清楚。如果你有多年,你可以重复这个并做出多个预测和平均。但我会根据所有数据制作一个模型。原则上(例如,没有 RAM 限制)您可以rbind data.frame 的d
    猜你喜欢
    • 2015-05-04
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    • 2022-01-16
    • 2019-05-04
    • 2017-03-15
    相关资源
    最近更新 更多