首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在最大模型中使用5倍交叉验证时,如何得到5的“摘要”预测图?

在最大模型中使用5倍交叉验证时,如何得到5的“摘要”预测图?
EN

Stack Overflow用户
提问于 2015-03-05 19:22:59
回答 2查看 1.8K关注 0票数 3

我希望我来到了正确的论坛。我是一位生态学家,通过dismo软件包使用R中的maxent (Version3.3.3,http://www.cs.princeton.edu/~schapire/maxent/)函数制作物种分布模型。我使用了一个参数“复制= 5”,它告诉maxent执行5次交叉验证。当直接从maxent.jar文件( maxent软件)运行maxent时,将生成一个包含统计信息的html文件,包括预测映射。在R中,也会生成一个html文件,但是预测映射必须在后面提取,使用r中dismo包中的“预测”函数。当我这样做时,由于5次交叉验证设置,我得到了5个映射。但是,(这就是问题所在)我只想要一个输出图,一个“摘要”预测图。我认为这是可能的,尽管我不知道maxent如何计算它。maxent教程(见上面的链接)指出:

"...you可能希望通过关闭“写输出网格”选项来避免占用磁盘空间,该选项将禁止对复制运行的输出网格的写入,从而只获得汇总统计网格(avg、stderr等)。“

可以放入R的参数列表可以在这个论坛9rQ中找到。

我尝试在maxent函数本身和预测函数中使用参数"outputgrids=FALSE“,但是它不起作用。我仍然有5张地图,尽管我在R中没有任何错误。

因此,我的问题是:如何得到一个“摘要”预测图,而不是通过交叉验证得出的五个预测图?

我希望有人能在这方面帮助我,我真的被困住了,在互联网上没有找到任何答案。甚至没有讨论过这件事。希望我的问题很清楚。这是我使用的R脚本:

模型1<-maxent(x=predvars、p=presence_points、a=target_group_absence、path=“//home/.//模型1”、args=c("replicates=5“、"outputgrids=FALSE"))

模型1 home<-预测(model1,predvars,filename=“//home/.//model1 1 map.tif”,outputgrids=FALSE)

向你问好,克里斯汀

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-06 02:58:03

很抱歉,作为坏消息的传递者,但是基于源代码,看起来Dismo的预测函数没有能力生成一个摘要地图。

对于那些关心的人来说,的细节非常重要:当您调用maxent时,当replicates设置为大于1时,maxent函数将返回一个MaxEntReplicates对象,而不是一个普通的MaxEnt对象。当predict接收到一个MaxEntReplicates对象时,它只遍历它包含的所有模型,并对它们单独调用predict

那么,接下来怎么办?,幸运的是,一切都没有丢失!Dismo没有这种功能的原因是,对于大多数类型的模型构建,实际上没有一种有效的方法来平均跨交叉验证模型的参数。我不想说MaxEnt确实是这样,但我怀疑是这样的。因此,交叉验证通常更多地用于检查您的模型构建方法是否适用于您的数据,而不是直接构建您的模型(有关这一点的进一步讨论,请参见这个问题 )。在通过交叉验证验证使用给定过程构建的模型对于您正在建模的现象似乎是准确的之后,习惯上使用所有的数据构建一个最终的模型。从理论上讲,这个新模型应该比对数据子集进行培训的模型更好。

因此,基本上,假设您的交叉验证模型看起来合理,您只需要一个复制就可以再次运行MaxEnt。您的最终结果将是基于交叉验证的模型精度估计,以及基于第二次运行的地图,将所有数据集中在一起。取决于您的问题到底是什么,您想要使用的交叉验证中可能会有其他有用的摘要统计数据,但这些都是您在html输出中已经看到的。

票数 4
EN

Stack Overflow用户

发布于 2017-10-16 03:29:48

几年后我可能发现了这个。但你可以这样做:

代码语言:javascript
复制
xm <- maxent(predictors, pres_train) # basically the maxent model
px <- predict(predictors, xm, ext=ext, progress= '' ) #prediction
px2  <- predict(predictors, xm2, ext=ext, progress= '' ) #prediction #02

models <- stack(px,px2) # create a stack of prediction from all the models
final_map <- mean(px,px2) # Take a mean of all the prediction
plot(final_map) #plot the averaged map

xm1,xm2,。将是交叉验证中每个分区以及px、px2、.的最大模型。将是预测的地图。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28885987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档