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

如何在使用shap-hypetune的BoostRFE时查看RFE每步选中的特征?

BoostRFE特征迭代过程打印与指标监测实现

完整可运行代码

你可以直接基于已有的代码扩展为如下版本,即可实现每轮特征变动、ROC-AUC指标的打印:

import xgboost as xgb
from shap_hypetune import BoostRFE

# 请替换为你17个特征对应的实际物理量名称,顺序必须和训练特征矩阵的列顺序完全一致
feature_names = ["物理量1", "物理量2", "物理量3", ..., "物理量17"]
# 请替换为你自己的训练集、验证集切分结果
X_train, X_val, y_train, y_val = 你的数据集切分逻辑

# 初始化基础XGBoost模型
XGB = xgb.sklearn.XGBClassifier(
    random_state=42,
    eval_metric="auc"
)

# 配置BoostRFE参数,开启评分记录
model = BoostRFE(
    estimator=XGB,
    min_features_to_select=8,
    importance_type='shap_importances',
    eval_set=[(X_val, y_val)],
    scoring='roc_auc',
    verbose=0 # 不需要内置日志可设为0
)

# 模型训练
model.fit(X_train, y_train)

# 打印每轮迭代信息
print("========== 迭代过程统计 ==========")
support_history = model.support_history_
score_history = model.scores_

for round_idx in range(len(support_history)):
    # 本轮保留的特征
    current_keep = [feature_names[i] for i in support_history[round_idx]]
    # 本轮移除的特征
    if round_idx == 0:
        current_remove = ["初始轮无移除特征"]
    else:
        prev_keep_idx = set(support_history[round_idx-1])
        current_keep_idx = set(support_history[round_idx])
        current_remove = [feature_names[i] for i in prev_keep_idx - current_keep_idx]
    # 打印信息
    print(f"\n第{round_idx+1}轮:")
    print(f"* 当前ROC-AUC:{score_history[round_idx]:.4f}")
    print(f"* 移除特征:{'、'.join(current_remove)}")
    print(f"* 保留特征:{'、'.join(current_keep)}")

# 打印最终筛选结果
print("\n========== 最终保留的8个特征 ==========")
final_keep = [feature_names[i] for i in model.support_]
for idx, feat in enumerate(final_keep, 1):
    print(f"{idx}. {feat}")

注意事项

  • 若需要同时监测多个指标,可将scoring参数改为列表格式,例如scoring=['roc_auc', 'f1', 'accuracy'],score_history会对应返回多组指标的每轮数值
  • feature_names列表的顺序必须和训练用特征矩阵的列顺序完全匹配,否则会出现特征名和物理量对应错误的问题
  • 如果你需要将迭代过程导出为表格用于论文写作,可以把每轮的移除特征、保留特征、得分存入pandas的DataFrame后直接导出为csv或tex格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:54:02