Вероятности случайного класса леса в отдельных растровых слоях

#r #probability #random-forest #raster #r-raster

#r #вероятность #случайный лес #растровый #r-растр

Вопрос:

Я использую пакет randomForest для классификации растрового стека различных предикторов. Классификация работает нормально, но я также хочу получить вероятности классов. С моим кодом я получаю только растровый слой с вероятностью первого класса, но я хотел бы получить растровый стек с вероятностями классов для каждого класса в одном слое.

 PRED_train$response <- as.factor(PRED_train$response)
rf <- randomForest(response~., data = PRED_train, na.action = na.omit, confusion = T)

pred_RF <- raster::predict(PRED,rf,)
beginCluster()
pred_RF <- clusterR(PRED, predict, args = list(rf,type="prob"))
endCluster()
  

Ответ №1:

Первым местом, на которое следует обратить внимание, должно быть ?raster::predict ; в котором есть пример, показывающий, как это сделать. Вот оно:

 library(raster)
logo <- brick(system.file("external/rlogo.grd", package="raster"))
p <- matrix(c(48, 48, 48, 53, 50, 46, 54, 70, 84, 85, 74, 84, 95, 85, 
   66, 42, 26, 4, 19, 17, 7, 14, 26, 29, 39, 45, 51, 56, 46, 38, 31, 
   22, 34, 60, 70, 73, 63, 46, 43, 28), ncol=2)
a <- matrix(c(22, 33, 64, 85, 92, 94, 59, 27, 30, 64, 60, 33, 31, 9,
   99, 67, 15, 5, 4, 30, 8, 37, 42, 27, 19, 69, 60, 73, 3, 5, 21,
   37, 52, 70, 74, 9, 13, 4, 17, 47), ncol=2)

xy <- rbind(cbind(1, p), cbind(0, a))
v <- data.frame(cbind(pa=xy[,1], extract(logo, xy[,2:3])))
v$pa <- as.factor(v$pa)

library(randomForest)
rfmod <- randomForest(pa ~., data=v)
rp <- predict(logo, rfmod, type='prob', index=1:2)
spplot(rp)
  

Комментарии:

1. добавление индекса = <количество классов в виде вектора> выполнит работу