首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R在dismo包中编码的问题

R在dismo包中编码的问题
EN

Stack Overflow用户
提问于 2020-03-03 12:49:01
回答 1查看 69关注 0票数 1

我正在尝试使用dismo包创建一个BRT模型。当我按照cran教程简化我的模型,然后尝试重新指定它时,我得到一个错误消息:"Error in data,gbm.x,drop = FALSE : error number of dimensions“。

我不确定是什么问题,任何帮助都将不胜感激。

代码语言:javascript
复制
> BRTsynoptic <- gbm.step(data=synoptic, gbm.x = 2:14,      gbm.y = 1,
 family = "bernoulli", tree.complexity = 10,
learning.rate = .001, bag.fraction = 0.75)
summary(BRTsynoptic)
#simplify the model
synoptic.simp <- gbm.simplify(BRTsynoptic, n.drops = 5)
#assign new model with simplification
synopticss.simp <- gbm.step(BRTsynoptic,
gbm.x=synoptic.simp$pred.list[[4]], gbm.y=1,
                               tree.complexity=10,learning.rate=0.001)
EN

回答 1

Stack Overflow用户

发布于 2020-03-03 23:57:12

如果你看一下synoptic.simp$final.drops,它是一个数据帧。下面是一个可重现的例子:

代码语言:javascript
复制
library(dismo)
data(Anguilla_train)
Anguilla_train = Anguilla_train[1:200,]

mdl <- gbm.step(data=Anguilla_train, gbm.x = 3:14, 
gbm.y = 2, family = "bernoulli",
tree.complexity = 10, learning.rate = 0.001, bag.fraction = 0.75)
train.simp <- gbm.simplify(mdl, n.drops = 5)

train.simp$final.drops
        preds order
1       DSDam     1
2  USRainDays     2
3     USSlope     3
4  SegLowFlow     4
5    SegTSeas     5
6     SegSumT    NA
7      DSDist    NA
8  DSMaxSlope    NA
9      USAvgT    NA
10   USNative    NA
11     Method    NA
12     LocSed    NA

要重新运行您的模型,您需要取出第二列中的preds:

代码语言:javascript
复制
var_names = with(train.simp$final.drops,preds[which(is.na(order))])
idx = match(var_names,colnames(Anguilla_train))

mdl.simp <- gbm.step(Anguilla_train,
gbm.x=idx, gbm.y=2,
tree.complexity=10,learning.rate=0.001)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60500241

复制
相关文章

相似问题

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