Predict/estimate 在 R 中使用 randomForest 的值
Predict/estimate values using randomForest in R
我想根据调查区域预测未调查区域中我的 Pop_avg
字段的值。根据对我之前的问题的建议,我正在使用 运行domForest。
我调查的地区:
> surveyed <- read.csv("summer_surveyed.csv", header = T)
> surveyed_1 <- surveyed[, -c(1,2,3,5,6,7,9,10,11,12,13,15)]
> head(surveyed_1, n=1)
VEGETATION Pop_avg Acres_1
1 Acer rubrum-Vaccinium corymbosum-Amelanchier spp. 0 27.68884
我的未调查区域:
> unsurveyed <- read.csv("summer_unsurveyed.csv", header = T)
> unsurveyed_1 <- unsurveyed[, -c(2,3,5,6,7,9,10,11,12,13,15)]
> head(unsurveyed_1, n=1)
OBJECTID VEGETATION Pop_avg Acres_1
13 Acer rubrum-Vaccinium corymbosum-Amelanchier spp. 0 4.787381
然后我从 unsurveyed_1
中删除了包含在 surveyed_1
中找不到的植被类型的行,并删除了未使用的特征级别。
> setdiff(unsurveyed_1$VEGETATION, surveyed_1$VEGETATION)
> unsurveyed_1 <- unsurveyed_1[!unsurveyed_1$VEGETATION == "Typha (angustifolia, latifolia) - (Schoenoplectus spp.) Eastern Herbaceous Vegetation", ]
> unsurveyed_1 <- unsurveyed_1[!unsurveyed_1$VEGETATION == "Acer rubrum- Nyssa sylvatica saturated forest alliance",]
> unsurveyed_1 <- unsurveyed_1[!unsurveyed_1$VEGETATION == "Prunus serotina",]
> unsurveyed_drop <- droplevels(unsurveyed_1)
接下来我 运行 运行domForest 并预测并将输出添加到 unsurveyed_drop
:
> surveyed_pred <- randomForest(Pop_avg ~
+ VEGETATION+Acres_1,
+ data = surveyed_1,
+ importance = TRUE)
> summer_results <- predict(surveyed_pred, unsurveyed_drop,type="response",
+ norm.votes=TRUE, predict.all=F, proximity=FALSE, nodes=FALSE)
> summer_all <- cbind(unsurveyed_drop, summer_results)
> head(summer_all, n=1)
OBJECTID VEGETATION Pop_avg Acres_1 summer_results
13 Acer rubrum-Vaccinium corymbosum-Amelanchier spp. 0 4.787381 0.120077
我想估算 summer_all
中列 Pop_avg
的值。我假设我需要使用 summer_results
中生成的比例,但我不确定我将如何做到这一点。感谢您提供任何帮助或进一步的建议。
更多信息:
我正在寻找基于 Vegetation
和 Acres_1
的 Pop_avg
的预测计数数据。我不确定 if/how 是否使用输出 summer_results
中的概率来实现此目的,或者我是否需要更改我的模型或尝试其他方法。
E2
我认为输出不正确的原因是因为 Pop_avg
运行 从 .333 及以上(看到鹿的地方)的任何地方,即 Population
除以 3。并且 Population
运行ges 从 1 开始(即 10、20...)。当我 运行 模型试图预测任何一个时,我得到类似的数字 运行 从 .9xx 到 2 或 3.xxx 尤其是当我 运行 它与 Population
.这似乎不对。
我的问题出在我的训练模型上。我发现我需要使用 Population
> 0 的调查数据子集来获得更准确的预测。
> surveyed_1 <- surveyed_1[c(surveyed_1$Population > 0),]
> surveyed_drop <- droplevels(surveyed_1)
> surveyed_pred <- randomForest(Population ~
VEGETATION+Acres_1,
data = surveyed_drop,
importance = TRUE)
我想根据调查区域预测未调查区域中我的 Pop_avg
字段的值。根据对我之前的问题的建议,我正在使用 运行domForest。
我调查的地区:
> surveyed <- read.csv("summer_surveyed.csv", header = T)
> surveyed_1 <- surveyed[, -c(1,2,3,5,6,7,9,10,11,12,13,15)]
> head(surveyed_1, n=1)
VEGETATION Pop_avg Acres_1
1 Acer rubrum-Vaccinium corymbosum-Amelanchier spp. 0 27.68884
我的未调查区域:
> unsurveyed <- read.csv("summer_unsurveyed.csv", header = T)
> unsurveyed_1 <- unsurveyed[, -c(2,3,5,6,7,9,10,11,12,13,15)]
> head(unsurveyed_1, n=1)
OBJECTID VEGETATION Pop_avg Acres_1
13 Acer rubrum-Vaccinium corymbosum-Amelanchier spp. 0 4.787381
然后我从 unsurveyed_1
中删除了包含在 surveyed_1
中找不到的植被类型的行,并删除了未使用的特征级别。
> setdiff(unsurveyed_1$VEGETATION, surveyed_1$VEGETATION)
> unsurveyed_1 <- unsurveyed_1[!unsurveyed_1$VEGETATION == "Typha (angustifolia, latifolia) - (Schoenoplectus spp.) Eastern Herbaceous Vegetation", ]
> unsurveyed_1 <- unsurveyed_1[!unsurveyed_1$VEGETATION == "Acer rubrum- Nyssa sylvatica saturated forest alliance",]
> unsurveyed_1 <- unsurveyed_1[!unsurveyed_1$VEGETATION == "Prunus serotina",]
> unsurveyed_drop <- droplevels(unsurveyed_1)
接下来我 运行 运行domForest 并预测并将输出添加到 unsurveyed_drop
:
> surveyed_pred <- randomForest(Pop_avg ~
+ VEGETATION+Acres_1,
+ data = surveyed_1,
+ importance = TRUE)
> summer_results <- predict(surveyed_pred, unsurveyed_drop,type="response",
+ norm.votes=TRUE, predict.all=F, proximity=FALSE, nodes=FALSE)
> summer_all <- cbind(unsurveyed_drop, summer_results)
> head(summer_all, n=1)
OBJECTID VEGETATION Pop_avg Acres_1 summer_results
13 Acer rubrum-Vaccinium corymbosum-Amelanchier spp. 0 4.787381 0.120077
我想估算 summer_all
中列 Pop_avg
的值。我假设我需要使用 summer_results
中生成的比例,但我不确定我将如何做到这一点。感谢您提供任何帮助或进一步的建议。
更多信息:
我正在寻找基于 Vegetation
和 Acres_1
的 Pop_avg
的预测计数数据。我不确定 if/how 是否使用输出 summer_results
中的概率来实现此目的,或者我是否需要更改我的模型或尝试其他方法。
E2
我认为输出不正确的原因是因为 Pop_avg
运行 从 .333 及以上(看到鹿的地方)的任何地方,即 Population
除以 3。并且 Population
运行ges 从 1 开始(即 10、20...)。当我 运行 模型试图预测任何一个时,我得到类似的数字 运行 从 .9xx 到 2 或 3.xxx 尤其是当我 运行 它与 Population
.这似乎不对。
我的问题出在我的训练模型上。我发现我需要使用 Population
> 0 的调查数据子集来获得更准确的预测。
> surveyed_1 <- surveyed_1[c(surveyed_1$Population > 0),]
> surveyed_drop <- droplevels(surveyed_1)
> surveyed_pred <- randomForest(Population ~
VEGETATION+Acres_1,
data = surveyed_drop,
importance = TRUE)