【问题标题】:Predicting of Randomforest model随机森林模型的预测
【发布时间】:2016-04-09 01:16:56
【问题描述】:

我实现了随机森林,然后开始使用 10 个变量预测森林中的叶面积索引。但是当预测停止时,预测的输出是一个空值的空地图。如果有人帮助我,我将不胜感激。我在这里添加我正在运行的代码。

在第一步中,我将栅格中的 NA 值分配为零。

tex37$glcm_variance_ENVI[is.na(tex37$glcm_variance_ENVI)] <- 0
tex37$glcm_entropy[is.na(tex37$glcm_entropy)] <- 0
RVI_raster3$glcm_mean_ENVI[is.na(RVI_raster3$glcm_mean_ENVI)] <- 0
RVI_raster3$glcm_mean[is.na(RVI_raster3$glcm_mean)] <- 0
RVI_raster3$glcm_variance[is.na(RVI_raster3$glcm_variance)] <- 0
RVI_raster5$glcm_mean_ENVI[is.na(RVI_raster5$glcm_mean_ENVI)] <- 0
RVI_raster5$glcm_variance[is.na(RVI_raster5$glcm_variance)] <- 0
RVI_raster5$glcm_mean[is.na(RVI_raster5$glcm_mean)] <- 0
RVI_raster7$glcm_mean_ENVI[is.na(RVI_raster7$glcm_mean_ENVI)] <- 0
RVIrededge[is.na(RVIrededge)] <- 0

在这里,我将所有 10 个栅格图层堆叠在一个栅格中。

image_stack_imp = stack(tex37$glcm_variance_ENVI,
                     tex37$glcm_entropy,
                     RVI_raster3$glcm_mean_ENVI,
                     RVI_raster3$glcm_mean,
                     RVI_raster3$glcm_variance,
                     RVI_raster5$glcm_mean_ENVI,
                     RVI_raster5$glcm_variance,
                     RVI_raster5$glcm_mean,
                     RVI_raster7$glcm_mean_ENVI,
                     RVIrededge)

我根据我的特征制作了一个表格,加上叶子区域索引作为标签。

Table_Importance = data.frame(LAI=d$LAI,
                          tex37.glcm_variance_ENVI=LAI37$glcm_variance_ENVI,
                          tex37.glcm_entropy=LAI37$glcm_entropy,
                          RVI_raster3.glcm_mean_ENVI=RVI3$glcm_mean_ENVI,
                          RVI_raster3.glcm_variance=RVI3$glcm_variance,
                          RVI_raster3.glcm_mean=RVI3$glcm_mean,
                          RVI_raster5.glcm_variance=RVI5$glcm_variance,
                          RVI_raster5.glcm_mean_ENVI=RVI5$glcm_mean_ENVI,
                          RVI_raster5.glcm_mean=RVI5$glcm_mean,
                          RVI_raster7.glcm_mean_ENVI=RVI7$glcm_mean_ENVI,
                          RVIrededge_values)

最后运行 Randomforest:

set.seed(104)
ind <- sample(2, nrow(Table_Importance), replace = 1, prob=c(0.66,0.33))
rf_imp<- randomForest(LAI ~ ., data=Table_Importance[ind ==     1,],importance=TRUE, ntree=1000, mtry=3)
pred_imp <- predict(rf_imp, Table_Importance[ind == 2,])
rmse(Table_Importance[ind==2, "LAI"], pred_imp)
###############################predicting########################
Map_LAI = predict(image_stack_imp, rf_imp,na.rm = TRUE, progress='window', type ='response')
plot(Map_LAI)

这里是小样本:

(head(Table_Importance, 20)

【问题讨论】:

  • 你能提供一个(小)可重现的例子吗?
  • 对不起,我是 stackoverflow 的新手,我不知道该怎么做?因为对于每个变量,都有不同的命令需要时间来运行。哪部分代码最好上传到这里?
  • dput(head(Table_Importance, 20)) 将为我们提供 Table_Importance 的前 20 行。这就是进入随机森林的内容。但首先检查您是否没有从预测函数中得到任何错误,以及 Table_Importance 中的数据是否符合您的预期。没有 NA,只有零等。
  • 我检查了 NA 值,表中没有任何值。预测函数的错误是由于我的图像中的 NA 值,我将它们替换为零,如前所示。我添加了我的表格示例。

标签: r output raster random-forest predict


【解决方案1】:

自己发现了问题,:D 答案只是表属性的名称应该与训练表的名称相同。在我的例子中,属性名称如下:

Table_Importance = data.frame(LAI=d$LAI,
                          glcm_variance_ENVI=LAI37$glcm_variance_ENVI,
                          glcm_entropy=LAI37$glcm_entropy,
                          glcm_mean_ENVI.1=RVI3$glcm_mean_ENVI,
                          glcm_variance.1=RVI3$glcm_variance,
                          glcm_mean.1=RVI3$glcm_mean,
                          glcm_variance.2=RVI5$glcm_variance,
                          glcm_mean_ENVI.2=RVI5$glcm_mean_ENVI,
                          glcm_mean.2=RVI5$glcm_mean,
                          glcm_mean_ENVI.3=RVI7$glcm_mean_ENVI,
                          layer=RVIrededge_values)

【讨论】:

    猜你喜欢
    • 2019-07-10
    • 2014-08-07
    • 2021-03-13
    • 2021-03-21
    • 2019-05-04
    • 2014-09-28
    • 2021-06-23
    • 2019-02-19
    相关资源
    最近更新 更多