pmd*_*aly 7 python feature-selection scikit-learn xgboost lightgbm
我目前正在使用xgb.train(...)which 返回一个助推器,但我想使用 RFE 来选择最好的 100 个功能。返回的 booster 不能在 RFE 中使用,因为它不是 sklearn 估计器。XGBClassifier 是 xgboost 库中的 sklearn api,但是,我无法获得与该xgb.train(...)方法相同的结果(在 roc-auc 上差 10%)。我已经尝试过 sklearn 助推器,但它们也无法获得类似的结果。我还尝试将该xgb.train(...)方法包装在一个类中以添加 sklearn estimator 方法,但要更改的方法太多了。有什么方法可以将xgb.train(...)sklearn 的 RFE 与 RFE 一起使用吗?
对于此类问题,我创建了shap-hypetune:一个用于同时进行超参数调整和梯度提升模型特征选择的 python 包
就您而言,这使您能够以非常简单直观的方式RFE执行:XGBClassifier
from shaphypetune import BoostRFE
model = BoostRFE(XGBClassifier(), min_features_to_select=1, step=1)
model.fit(X_train, y_train, eval_set=[(X_valid, y_valid)], early_stopping_rounds=6, verbose=0)
pred = model.predict(X_test)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,您可以使用标准 XGB API 中提供的所有拟合选项(例如early_stopping_rounds或自定义指标)来自定义训练过程。
您还可以使用shap-hypetune来计算参数调整(也与特征选择同时进行)或使用 SHAP 特征重要性来RFE计算Boruta特征选择。完整示例请参见此处