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

如何利用Leaps包自动筛选最优子集列并生成新数据集?

自动提取leaps包最优特征子集并生成新数据集

步骤说明

  1. 从regsubsets的摘要结果中提取变量选择逻辑矩阵,矩阵每行对应一个变量数量的最优子集,每列对应原数据特征,TRUE表示该特征被选入当前子集。
  2. 结合which.min得到的最优子集变量数,定位到对应行,提取被选中的特征名。
  3. 用特征名直接从原数据中筛选列,生成新数据集。

完整代码示例

library(leaps)

# 运行特征选择
mtcars.regsubsets <- regsubsets(mpg ~ ., data = mtcars)
reg_summary <- summary(mtcars.regsubsets)

# 确定最优子集的变量数量
best_n <- which.min(reg_summary$cp)

# 提取最优子集对应的特征名
# 注:names(mtcars)[-1]去掉响应变量mpg;reg_summary$which[best_n, -1]去掉截距项列,取对应行的TRUE位置
best_vars <- names(mtcars)[-1][reg_summary$which[best_n, -1]] 

# 生成仅含最优特征的新数据集
mtcars_best_subset <- mtcars[, best_vars]

# 查看结果
head(mtcars_best_subset)

代码解释

  • reg_summary$which是逻辑矩阵,行代表不同变量数量的子集,列包含截距项和所有特征。
  • 通过reg_summary$which[best_n, -1]定位到最优子集的特征选择结果,匹配原数据的特征名后,直接索引原数据框即可自动生成目标数据集,无需手动填写列索引。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 21:12:17