如何使用 cforest 生成的模型预测新栅格

How to predict new raster using model generated by cforest

我使用 randomForest 模型来预测 class 成员资格。 'x' 由 10 个 class 组成,我用它们来训练从大型 rasterstack/brick 中提取的 'training_predictors' 值。具体的代码行是:

r_tree<-randomForest(x ~. , data=training_predictors, ...)

然后我运行'predict'使用我应用到rasterstack'predictor_data'的模型'r_tree',如下:

predictions<-predict(predictor_data, r_tree, filename=outraster, fun=predict na.rm=TRUE, format="PCDISK", overwrite=TRUE, progress="text", type="response").

输出的是我用作专题图的栅格。

我想使用条件推理树模式 'cforest' 而不是 randomForest 来实现相同的目标。

我知道 'predict' 可以与 cforest 一起使用,但是,我无法生成光栅文件,例如上面说明的那些与 randomForest 一起使用的光栅文件。

它应该 运行 没问题,但您可能需要添加参数 OOB=TRUE,并确定是否有任何因素。

示例数据

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)

# extract values for points
xy <- rbind(cbind(1, p), cbind(0, a))
v <- data.frame(cbind(xy[,1], extract(logo, xy[,2:3])))
colnames(v)[1] <- 'pa'

基本型号

library(party)
m1 <- cforest(pa~., control=cforest_unbiased(mtry=3), data=v)
pc1 <- predict(logo, m1, OOB=TRUE)
plot(pc1)

带因子的模型

v$red <- as.factor(round(v$red/100))
logo$red <- round(logo[[1]]/100)
m2 <- cforest(pa~., control=cforest_unbiased(mtry=3), data=v)
f <- list(levels(v$red))
names(f) <- 'red'
pc2 <- predict(logo, m2, OOB=TRUE, factors=f)
plot(pc2)

顺便说一句,这几乎直接来自 raster::predict

的帮助文件