如何恢复 XGBoost 特征重要性图中的原始特征名称(预处理后删除它们)?

新手上路,请多包涵

在训练 XGBoost 模型之前对训练数据进行预处理(例如居中或缩放)可能会导致特征名称丢失。 SO 上的大多数答案都建议以不丢失特征名称的方式训练模型(例如在数据框列上使用 pd.get_dummies)。

我已经使用预处理数据训练了 XGBoost 模型(使用 MinMaxScaler 进行中心和缩放)。因此,我处于丢失功能名称的类似情况。

例如:

     scaler = MinMaxScaler(feature_range=(0, 1))
    X = scaler.fit_transform(X)
    my_model_name = XGBClassifier()
    my_model_name.fit(X,Y)`

其中 X 和 Y 分别是训练数据和标签。上面的缩放返回一个 2D NumPy 数组,从而丢弃 pandas DataFrame 中的特征名称。

因此,当我尝试使用 plot_importance(my_model_name) 时,它会导致特征重要性图,但只有 f0、f1、f2 等特征名称,而不是原始数据集中的实际特征名称.有没有办法将原始训练数据中的特征名称映射到生成的特征重要性图中,以便将原始特征名称绘制在图中?非常感谢在这方面的任何帮助。

原文由 user11086563 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 713
1 个回答

您可以通过以下方式获取功能名称:

model.get_booster().feature_names

原文由 Binyamin Even 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏