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

R语言:如何用向量/范围定义neuralnet模型自变量(无需逐个列名)

解决neuralnet模型公式通用化(无需逐个写变量/修改数据集)的方案

针对你需要适配不同数据集、轻量化代码的需求,以下两种方法可以直接通过列范围或向量定义自变量,无需修改原数据集或逐个罗列变量:

方法1:使用reformulate函数(推荐,代码更简洁)

reformulate是R中专门用于构造公式的函数,可以直接传入自变量列名向量和因变量名称生成公式:

# 1. 指定自变量范围(比如第4到78列)或自定义列名向量
predictor_cols <- colnames(train_data)[4:78]
# 或者用自定义向量:predictor_cols <- c("var1", "var3", "var5")

# 2. 构造公式
model_formula <- reformulate(predictor_cols, response = "Class")

# 3. 训练neuralnet模型
model <- neuralnet(
  model_formula,
  data = train_data,
  hidden = c(3,2,1),
  linear.output = FALSE
)

方法2:字符串拼接生成公式(直观易理解)

通过拼接字符串构造公式文本,再转换为公式对象,同样无需修改原数据集:

# 1. 获取自变量列名
predictor_cols <- colnames(train_data)[4:78]

# 2. 拼接成公式字符串
formula_text <- paste0("Class ~ ", paste(predictor_cols, collapse = " + "))

# 3. 转换为公式对象
model_formula <- as.formula(formula_text)

# 4. 训练模型
model <- neuralnet(
  model_formula,
  data = train_data,
  hidden = c(3,2,1),
  linear.output = FALSE
)

核心优势

  • 无需创建子数据集或删除原数据中的无关变量,避免数据复制带来的性能开销,保持代码轻量化
  • 只需调整predictor_cols的取值(比如列范围、自定义向量),就能快速适配不同数据集,通用性强
  • 两种方法都直接基于原数据集操作,不会额外占用内存

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 10:37:08