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

使用scorecardpy加载模型后调用scorecard_ply报UnboundLocalError的解决方法

解决scorecardpy模型保存加载后调用scorecard_ply报错的问题

问题原因

np.save()/np.load() 不适合保存scorecardpy生成的card模型。该模型是包含DataFrame等复杂结构的字典,numpy的序列化方式会丢失部分元数据或结构信息,导致加载后的模型缺失card_df关键字段,触发报错。

解决方法

方法1:使用pickle保存/加载模型(推荐)

pickle是Python原生序列化工具,能完整保留复杂对象的结构,完美适配scorecardpy的card模型:

  • 保存模型:
import pickle
# 假设你的card模型变量名为card_model
with open('card_model.pkl', 'wb') as f:
    pickle.dump(card_model, f)
  • 加载模型:
import pickle
with open('card_model.pkl', 'rb') as f:
    loaded_card_model = pickle.load(f)
  • 调用生成评分:
import scorecardpy as sc
score = sc.scorecard_ply(test_data, loaded_card_model)

方法2:手动补全缺失字段(仅应急用)

如果已经用np.save保存了模型,可通过以下方式临时修复:

  1. 重新训练模型,提取原始模型中的card_df字段
  2. 给加载后的模型字典补充该字段:
import numpy as np
loaded_model = np.load('card_model.npy', allow_pickle=True).item()
# 假设重新训练的原始模型为original_card_model
loaded_model['card_df'] = original_card_model['card_df']
# 调用评分
score = sc.scorecard_ply(test_data, loaded_model)

此方法依赖原始训练模型,局限性大,仅作为应急方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 02:12:32