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

Databricks中XGBModel报无feature_types属性错误,求排查原因

XGBoost模型加载后出现'feature_types'缺失的原因及解决办法
  • 模型保存方式不规范
    XGBoost官方不建议直接用pickle保存模型,pickle容易丢失模型元数据(比如feature_types),尤其是跨环境或版本迁移时。正确的做法是用XGBoost自带的save_model()和load_model()方法:

    # 重新保存模型(训练环境中执行)
    model.save_model('/.../model.json')
    
    # 加载模型(当前Databricks环境中执行)
    import xgboost as xgb
    # 注意要和原模型类型一致,比如原模型是XGBClassifier就用这个类初始化
    model = xgb.XGBClassifier()
    model.load_model('/.../model.json')
    
  • 模型加载时类型不匹配
    如果原模型是XGBClassifier或XGBRegressor这类具体子类,但你直接用pickle加载后当成泛型XGBModel使用,就可能出现属性缺失。加载时必须明确初始化对应的模型类,再加载权重。

  • Databricks数据类型冲突
    在Databricks中,若输入的df[features]是Spark DataFrame列,其数据类型可能和训练时的特征类型(比如numpy数组、Pandas列)不匹配,触发XGBoost内部对feature_types的校验。可以先把数据转成Pandas DataFrame再预测:

    model.predict_proba(df[features].toPandas())
    

    同时检查特征列的数据类型,确保和训练集的dtype完全一致。

  • 环境依赖的细微版本差异
    即使指定了XGBoost版本,若训练环境和当前Databricks环境的其他依赖(比如scikit-learn、numpy)版本不一致,也可能导致pickle加载的模型不完整。解决办法要么完全对齐所有依赖版本,要么改用XGBoost官方的模型保存方式彻底规避版本问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 16:25:12