You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pickle加载XGBoost模型后获取feature_names报KeyError: None

解决XGBoost模型加载后访问feature_names报KeyError: None的问题

可能的原因及对应解决方案:

  • 版本兼容性问题
    不同XGBoost版本对feature_names的存储方式存在差异,之前正常现在报错大概率是版本更新导致的。

    • 对比之前正常运行时的XGBoost版本,尝试降级/升级到对应版本测试。
    • 如果是sklearn接口的模型(XGBClassifier/XGBRegressor),可尝试访问内部booster对象的特征名:
      cols_when_model_builds = xgb_model.get_booster().feature_names
      
  • 模型类型不匹配
    加载的模型可能是原生xgboost.Booster而非sklearn包装后的模型,两者访问特征名的方式不同:

    • 先打印模型类型确认:
      print(type(xgb_model))
      
    • 如果是原生Booster,可通过以下方式获取特征名:
      # 从模型属性中获取
      cols_when_model_builds = xgb_model.attributes().get('feature_names')
      # 或从特征权重中提取(仅包含有权重的特征)
      cols_when_model_builds = list(xgb_model.get_score(importance_type='weight').keys())
      
  • 模型文件损坏或路径错误
    加载的模型文件可能损坏,或者路径指向了错误的旧文件:

    • 确认path指向的是正确的模型文件,尝试重新保存一次训练好的模型再加载:
      # 重新保存模型(如果还有可用的模型对象)
      pickle.dump(xgb_model, open("new_model_path.pkl", "wb"))
      # 加载新保存的模型
      xgb_model = pickle.load(open("new_model_path.pkl", "rb"))
      

内容的提问来源于stack exchange,提问作者Gun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 20:30:56