如何在不重新训练模型的情况下获得XGBoost特征重要性图中的实际特征名称?

问题描述 投票:2回答:1

[我在Stackoverflow上遇到了几个问题,大众面临的问题是,他们在使用例如拟合/训练XGBoost模型之前预处理训练数据,例如使用中心和比例等

`

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数组,从而丢失要素名称。

我已经训练了XGBoost模型,但是使用了预处理的数据(使用MinMaxScaler的中心和比例)。因此,我处于类似的情况,其中列名/功能名丢失了。因此,当我尝试使用plot_importance(my_model_name)时,它会得出特征重要性的图,但是只有特征名称为f0,f1,f2等,而数据集中的实际特征名称却没有,这很明显。

关于SO的大多数答案都与以不丢失要素名称的方式训练模型有关(例如,在数据框列上使用pd.get_dummies。我有一个疑问,当我使用[C0 ],而无需重新训练模型吗?有没有办法将特征名称f0,f1,f2等从原始训练数据(未经预处理,带有列名称)映射到生成的特征重要性图,以便实际特征名称被绘制在图表中吗?在这方面的任何帮助都将受到高度赞赏。

python dataframe xgboost
1个回答
0
投票
您可以通过以下方式获得功能名称:
© www.soinside.com 2019 - 2024. All rights reserved.