【问题标题】:Predict multiband raster with PLS model object in R在 R 中使用 PLS 模型对象预测多波段栅格
【发布时间】:2015-03-09 22:52:39
【问题描述】:

我在 R 中有一个偏最小二乘回归模型对象,我想用它来预测值作为地图上的空间模式。

然而,到目前为止,这对我不起作用。 PLS模型在R(PLS包)中处理,输入为表格:

Dependent variable   Indepentent var. 1   Indepentend var ...     Indepented var. 101
Value                value                value                   value
Value                value                value                   value
...                  ...                  ...                     ...

所以我想根据地图上每个像素的 101 个独立变量来预测因变量的值。然而,PLS 模型输入是一个表格,预测数据由一个具有 101 个波段(层)的 BSQ 文件组成。所以训练数据和预测数据的数据结构是完全不同的。

有人告诉我,我应该堆叠 BSQ 地图,然后我可以使用 Predict 功能。这不起作用。

我怎样才能以某种方式将 BSQ 文件中的 101 个波段强制转换为一个结构,以便我能够根据我的 PLS 模型对每个像素进行预测? Bair 请记住,在 R 方面我有点新手。

library(raster)
library(rgdal)
library(maptools)
library(sp)
library(pls)


#   the dir and name of the plsr model object
modDir        <- "H:/Process"
modName       <- "Model"

#   the dir and type of the remote sensing image
rsDir         <- "H:/data"
rsName        <- "Hyper.bsq"

# Read the PLSR model
setwd("H:/Process")
# setwd(paste(modDir, modName, sep= "/"))
m             <- load(list.files()[grep("Model", list.files())]) 
mod           <- get(m)

# Read the RS image
setwd(rsDir)
rs            <- stack(rsName)


predict(mod, rs)

谢谢!阿伦德

【问题讨论】:

    标签: r


    【解决方案1】:

    rs 的结构需要与用于拟合模型的数据结构完全相同。一般来说,拟合模型将使用(这使用示例数据):

    library(plsr)
    yarn.pls <- plsr(density ~ NIR, 6, data = yarn)
    

    其中yarn[['NIR']] 实际上是一个矩阵,其行数与它所属的整体data.frame 的行数相同:

    > str(yarn)
    'data.frame':   28 obs. of  3 variables:
     $ NIR    : num [1:28, 1:268] 3.07 3.07 3.08 3.08 3.1 ...
      ..- attr(*, "dimnames")=List of 2
      .. ..$ : NULL
      .. ..$ : NULL
     $ density: num  100 80.2 79.5 60.8 60 ...
     $ train  : logi  TRUE TRUE TRUE TRUE TRUE TRUE ...
    

    为了进行预测,您需要输入 predict 一个 data.frame ,该变量还具有一个 NIR 变量(具有该名称),该变量实际上是一个具有相同列数的矩阵(即您的情况下的波段),和一些行。对于每一行,进行density 的预测。

    因此,请仔细查看您的训练数据(使用 str)并模仿它进行预测。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-16
      • 1970-01-01
      • 1970-01-01
      • 2013-12-18
      • 2016-09-04
      相关资源
      最近更新 更多