如何将RFE与xgboost增压器一起使用?

2024-06-16 03:26:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在使用xgb.train(...),它返回一个助推器,但是我想使用RFE来选择最好的100个特性。返回的助推器不能用于RFE,因为它不是sklearn估计器。XGBClassifier是xgboost库中的sklearn api,但是,我无法获得与xgb.train(...)方法相同的结果(roc auc的结果差10%)。我试过sklearn助推器,但也不能得到类似的结果。我还尝试在类中包装xgb.train(...)方法以添加sklearn估计器方法,但是有太多的方法需要更改。有什么方法可以将xgb.train(...)与sklearn的RFE一起使用吗


Tags: 方法apitrain特性sklearnrocxgboostauc
1条回答
网友
1楼 · 发布于 2024-06-16 03:26:55

对于这类问题,我创建了shap-hypetune:一个python包,用于同时调整超参数和梯度增强模型的特性选择

在您的情况下,这使您能够以非常简单和直观的方式使用XGBClassifier执行RFE

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)

如您所见,您可以使用标准xgbapi中可用的所有拟合选项,如early_stopping_rounds或自定义度量,来定制培训过程

您还可以使用shap hypetune计算参数调整(也可以与特征选择同时进行),或者使用shap特征重要性使用RFEBoruta计算特征选择。完整示例可用here

相关问题 更多 >