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

使用Pickle、JSON和JobLib保存加载XGBoost模型时出错

XGBoost模型加载失败问题分析与解决

错误原因解析

报错Check failed: str[0] == '{'说明XGBoost在解析模型文件时,预期文件为JSON格式(以{开头),但实际读取到的内容不符合该格式。常见诱因包括:

  • 版本不兼容:Colab环境的XGBoost版本与本地机器版本差异过大,不同版本的模型存储结构存在变化,导致解析失败。
  • 保存/加载方式不匹配:混用第三方库(pickle/joblib)与XGBoost原生加载方法。比如用pickle保存的模型,却调用model.load_model()加载——该方法仅识别XGBoost原生的二进制或JSON格式文件。
  • 文件损坏:模型文件在保存或下载过程中中断、篡改,导致内容不完整,开头并非预期的{。

解决步骤

  1. 统一XGBoost版本
    在Colab和本地分别执行以下命令,确认版本是否一致:

    import xgboost
    print(xgboost.__version__)
    

    若版本不同,将本地版本升级/降级至与Colab一致(例如执行pip install xgboost==<对应版本号>)。

  2. 使用XGBoost原生方法保存加载
    优先使用XGBoost自带的API,兼容性最佳:

    • 保存为二进制格式:
      model.save_model('xgb_reg_model.model')
      
    • 加载模型:
      from xgboost import XGBRegressor
      model = XGBRegressor()
      model.load_model('xgb_reg_model.model')
      

    若需保存为JSON格式,同样使用原生方法:

    model.save_model('xgb_reg_model.json')
    # 加载
    model.load_model('xgb_reg_model.json')
    
  3. 正确使用pickle/joblib
    若必须用第三方库保存,加载时不要调用XGBoost的load_model(),直接用对应库加载:

    • 保存(joblib示例):
      import joblib
      joblib.dump(model, 'xgb_reg_model.sav')
      
    • 加载:
      import joblib
      model = joblib.load('xgb_reg_model.sav')
      
  4. 检查模型文件完整性
    打开JSON格式的模型文件,确认开头为{。若不是,说明文件损坏,重新在Colab保存模型并完整下载到本地。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:10:41