在训练 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 等特征名称,而不是原始数据集中的实际特征名称。
有没有办法将原始训练数据中的特征名称映射到生成的特征重要性图,以便将原始特征名称绘制在图中?非常感谢在这方面的任何帮助。
您可以通过以下方式获取功能名称:
model.get_booster().feature_names
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)