从经过训练的模型中提取特征名称
extract feature names from trained model
我有一个从 pickle 文件中读取的预训练 XGBoost 模型。当我尝试对包含模型特征集之外的某些列的新数据集进行预测时,我收到错误消息:
training data did not have the following fields: column1, column2,...
我可以排除训练数据中不存在的这些列。我不想对列名称进行硬编码(有很多),而是只想找到训练列和预测数据集之间的交集。
有没有一种方法可以从训练模型中提取特征名称(显然模型记录了字段名称)而不必返回到我的训练数据集?
预测数据集必须仅包含训练数据集中存在的那些列。不包括额外的列甚至是有意义的,因为权重是根据您的训练数据集学习的。除了训练数据集之外,包括任何额外的列不会提供任何价值或提高您的准确性,因为当您预测时,您所做的只是将模型的学习权重乘以新值。确保不要包含任何额外的预测功能。
您可以按如下方式从腌制模型中检索特征名称:
fitted_model.get_booster().feature_names
我有一个从 pickle 文件中读取的预训练 XGBoost 模型。当我尝试对包含模型特征集之外的某些列的新数据集进行预测时,我收到错误消息:
training data did not have the following fields: column1, column2,...
我可以排除训练数据中不存在的这些列。我不想对列名称进行硬编码(有很多),而是只想找到训练列和预测数据集之间的交集。
有没有一种方法可以从训练模型中提取特征名称(显然模型记录了字段名称)而不必返回到我的训练数据集?
预测数据集必须仅包含训练数据集中存在的那些列。不包括额外的列甚至是有意义的,因为权重是根据您的训练数据集学习的。除了训练数据集之外,包括任何额外的列不会提供任何价值或提高您的准确性,因为当您预测时,您所做的只是将模型的学习权重乘以新值。确保不要包含任何额外的预测功能。
您可以按如下方式从腌制模型中检索特征名称:
fitted_model.get_booster().feature_names