I would like to recover the feature names from my saved models, however it seems this info is lost when the model is saved. Steps:
- train model
- feature names exist
- save model using
Booster.save_model
- load model using
Booster.load_model
- feature names of loaded model are
None
Code to reproduce:
import xgboost as xgb
# Prep data
data = {'col_1': [3, 2, 1, 0], 'col_2': [1, 2, 3, 4], 'label': [1, 1, 0, 0]}
df = pd.DataFrame.from_dict(data)
y_train = df.pop('label')
x_train = df
# Train model
classifier = xgb.XGBClassifier(
max_depth=3,
learning_rate=0.1,
n_estimators=3)
classifier.fit(x_train, y_train)
print(f'Trained, features: {classifier.get_booster().feature_names}')
# Save model
filename = 'test_model.bst'
classifier.save_model(filename)
# Load model
bst_model = xgb.Booster()
bst_model.load_model(filename)
print(f'Loaded: {bst_model.feature_names}')
How can I include the feature names in my model?