2015-04-22 60 views
0

我使用randomForest模型來預測類成員資格。 'x'由10個類組成,用於訓練從大型rasterstack/brick中提取的'training_predictors'值。碼的特定行是:(X〜,數據= training_predictors,...)如何使用cforest生成的模型預測新柵格

r_tree < -randomForest

然後我運行 '預測' 使用模型 'r_tree' 我適用於rasterstack 'predictor_data',如下圖:

預測< -predict(predictor_data,r_tree,文件名= outraster,樂趣=預測na.rm = TRUE,FORMAT = 「PCDISK」,覆蓋= TRUE,進展=「text」,type =「response」)。

輸出是我用作專題圖的柵格。

我想使用條件推理樹模式'cforest'而不是randomForest來實現相同的目標。

我知道'預測'可以和cforest一起使用,但是我還沒有能夠生成光柵文件,比如像上面那樣使用randomForest的光柵文件。

回答

0

它應該運行良好,但您可能需要添加參數OOB = TRUE,並確定是否有任何因素。與因素

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) 

順便說

實例數據

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) 

模式,這是以幾乎直出光柵的幫助文件::預測

+0

嗨,謝謝,但沒有成功塞斯。我可以使用帶有大型RasterStack〜5億個元素的randomForest模型來運行編輯,但是當我嘗試使用cforest模型(基本)時,似乎可以正常工作,但在等待幾個小時後沒有任何結果。使用相同的數據該cforest需要一個data.frame。確實令人困惑。皮埃爾 –

+0

那麼,上面顯示它應該工作。如果它不適合你,那可能有幾個原因。首先設置一個非常小的例子,僅爲幾個單元格,並嘗試首先將其作爲data.frame(data.frame(s [1:10])運行(除非前10個單元格爲NA),然後對於小光柵(s [1:10,drop = FALSE]) – RobertH

+0

是的,我有同樣的想法,我用100×100光柵文件進行了測試,我花了大約10分鐘完成'預測'柵格數爲2445×2852(每層大約75個變量),使用隨機森林對象時,大約需要40分鐘,如果cforest模型預測速率正確,則需要將近5天才能獲得完整的柵格這很令人費解,非常感謝。 –