模型保存后再加载其列名顺序会重新排序,因此推理时应该按照模型新的顺序传入,代码如下:
# 加载模型
model_path = ""
lgb_model = lgb.Booster(model_file=model_path)
# 获取入模列表
important_columns = lgb_model.feature_name()
# 对类别型变量进行转化
category_list = 'industry,career,status,province,city'.split(',')
for col in category_list:
df[col] = df[col].astype('category')
# 模型推理, 这里的important_columns和训练时的列顺序出现了变化
df["pred_score"] = lgb_model.predict(df[important_columns])