Переделать прогностическую модель с деревьев в мешках (ipred) в случайный лес - PullRequest
0 голосов
/ 22 января 2019

У меня есть рабочий пример с Bagged trees моделью.Однако в больших областях время вычислений очень велико и требует много памяти (максимальная область 1200x1200 пикселей на 16 ГБ ОЗУ).

Не могли бы вы помочь мне переделать этот пример в модель случайного леса, реализованную в пакете ranger с загрузкой ковариат через covstack?

execGRASS("g.region", flags = "p", region = "10m_envelope")
grids10m <- readGDAL("soil.asc")
names(grids10m) <- "soil"
grids10m$soil.c <- as.factor(grids10m$soil) 
LSP.list <- c("dem.asc", "twi.asc", "gmf.asc", "rad.asc", "aspect.asc",
              "slope.asc", "profc.asc", "planc.asc", "longc.asc",
              "minic.asc", "maxic.asc", "flowdirect.asc", "flowaccum.asc", 
              "flowlength.asc", "diststream.asc", "medial.asc")
for(i in 1:length(LSP.list)){
 grids10m@data[strsplit(LSP.list[i], ".asc")[[1]]] <- 
   readGDAL(LSP.list[i])$band1
}

#--------- Bagged Trees model---------- 
library(ipred)

traindatastat <- readOGR("traindatastat.shp", "traindatastat")
traindatastat <- na.omit(traindatastat)
traindatastat$soil <- as.factor(traindatastat$soil)
traindatastat$gmf <- as.factor(traindatastat$gmf)
traindatastatd = as.data.frame(traindatastat)

#--------- train model ----------   
BGT.soilpredict.train <- bagging(soil ~ dem + twi + rad + slope + 
                                 longc + maxic + flowaccum + flowlength + 
                                 diststream, data = traindatastatd, 
                                 nbagg = 100)
pred.BGT.soilpredict.train <- predict(BGT.soilpredict.train, 
                                      newdata = traindatastatd)
DSM_data5s <- as.data.frame(grids10m@data)  

#--------- Load full dataset (covariates) ----------    
files <- c("dem.asc", "twi.asc", "gmf.asc", "rad.asc", "aspect.asc", 
           "slope.asc", "profc.asc", "planc.asc", "longc.asc", 
           "minic.asc", "maxic.asc", "flowdirect.asc", "flowaccum.asc", 
           "flowlength.asc", "diststream.asc")
covStack <- raster(files[1])
for (i in 2:length(files)) {
  covStack <- stack(covStack, files[i])
}

#--------- Predict categorial data (soil type) ----------   
pred.BGT.soilpredict <- predict(covStack, BGT.soilpredict.train, type = "class",
                                "map.BGT.rSoil.tif", format = "GTiff", 
                                datatype = "INT2S", overwrite = TRUE)
spplot(pred.BGT.soilpredict, col.regions=rainbow, cuts = 5, 
       scales=list(draw = TRUE), main = "Predict soils by Bagged Trees model")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...