Python 从训练模型中提取特征名称

Python 从训练模型中提取特征名称,python,scikit-learn,xgboost,Python,Scikit Learn,Xgboost,我从pickle文件中读取了一个经过预训练的XGBoost模型。当我试图对一个新数据集进行预测时,其中一些列超出了模型的功能集,我收到了错误消息: 培训数据没有以下字段:第1列、第2列 我可以排除培训数据中不存在的这些列。与其硬编码列名(有很多),我只想找到训练和预测数据集的列之间的交叉点 有没有一种方法可以从经过训练的模型(显然模型记录了字段名)中提取特征名称,而不必返回到我的训练数据集?预测数据集必须只包含训练数据集中存在的列。甚至不包括额外的列也是有意义的,因为权重是基于训练数据集学习的。

我从pickle文件中读取了一个经过预训练的XGBoost模型。当我试图对一个新数据集进行预测时,其中一些列超出了模型的功能集,我收到了错误消息:

培训数据没有以下字段:第1列、第2列

我可以排除培训数据中不存在的这些列。与其硬编码列名(有很多),我只想找到训练和预测数据集的列之间的交叉点


有没有一种方法可以从经过训练的模型(显然模型记录了字段名)中提取特征名称,而不必返回到我的训练数据集?

预测数据集必须只包含训练数据集中存在的列。甚至不包括额外的列也是有意义的,因为权重是基于训练数据集学习的。除了training dataset之外,包含任何额外的列都不会提供任何值或提高您的准确性,因为当您进行预测时,您所做的只是将学到的模型权重乘以新值。确保不要包含任何用于预测的额外功能。

您可以按如下方式从pickle模型中检索功能名称:

fitted_model.get_booster().feature_names

我不想包括额外的栏目。我的问题是如何从模型中获取列名,这样我就只能在训练集中包含特性。