You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

biomod2包BIOMOD_Modeling()调用GBM算法时维度错误求助

biomod2包调用GBM算法报错「incorrect number of dimensions」的解决方法

问题背景

使用biomod2 4.2-3版本构建Acacia confusa的物种分布模型,调用GBM算法时出现「incorrect number of dimensions」错误,但相同数据下GLM、GAM算法可正常运行。

数据情况

物种数据

Acacia confusa的存在/缺失数据(1=存在,0=缺失),共7796个样地,无NA值:

> dim(test_spe)
[1] 7796    1
> head(test_spe)
# A tibble: 6 x 1
  `Acacia confusa`
             <dbl>
1                0
2                0
3                0
4                0
5                0
6                1

环境数据

仅包含年平均温度(MAT)变量,共7796个样地:

> dim(test_env)
[1] 7796    1
> head(test_env)
       MAT
1 19.08279
2 19.08279
3 19.08279
4 20.02513
5 19.08279
6 17.25201

建模准备与报错详情

数据格式化与参数设置

data4biomod = BIOMOD_FormatingData(
  resp.var = test_spe,
  expl.var = test_env,
  resp.name = "Acacia.confusa"
)

settings4biomod = BIOMOD_ModelingOptions() # 使用默认设置

建模调用与错误

执行GBM建模时触发错误:

biomod = BIOMOD_Modeling(
  bm.format = data4biomod,
  modeling.id = "testing",
  models = c("GBM"),
  bm.options = settings4biomod,
  nb.rep = 1,
  data.split.perc = 100 # 不预留验证数据
)

错误信息:

Error in x[i.train, , drop = TRUE][i, , drop = FALSE] : 
  incorrect number of dimensions
Error in h(simpleError(msg, call)) : 
  在為 'predict' 函式選擇方法時評估 'object' 引數發生錯誤: object 'model.bm' not found 

*** inherits(g.pred,'try-error')
   ! Note :  Acacia.confusa_allData_allRun_GBM failed!

问题原因

当仅使用单个环境变量时,biomod2默认的GBM交叉验证(cv.folds=3)在处理数据时会将环境变量降维为向量,导致后续索引操作时维度不匹配,触发错误。而GLM、GAM的内部数据处理逻辑不受单变量影响,因此可正常运行。

解决方案

修改GBM的建模选项,关闭交叉验证(因已设置data.split.perc=100,无需额外交叉验证):

# 自定义GBM建模参数,关闭交叉验证
settings4biomod = BIOMOD_ModelingOptions(
  GBM = list(
    cv.folds = 0,        # 关闭交叉验证
    n.trees = 2500,      # 保留默认树数量
    interaction.depth = 3,# 保留默认交互深度
    shrinkage = 0.001,   # 保留默认学习率
    bag.fraction = 0.5   # 保留默认袋分数
  )
)

# 重新执行建模
biomod = BIOMOD_Modeling(
  bm.format = data4biomod,
  modeling.id = "testing",
  models = c("GBM"),
  bm.options = settings4biomod,
  nb.rep = 1,
  data.split.perc = 100
)

验证

修改参数后,GBM模型可正常训练,不会再触发维度错误。

内容的提问来源于stack exchange,提问作者HsunHung Chu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 16:01:01