8.5 モデルの保存

通常の業務では作成したモデルをプロダクトに移植するため保存 (シリアライズ) する必要がありますが, 今回は必ずしも必要でありません. しかし, その必要がなくとも途中経過のバックアップや計算結果の再現性確認のため保存することも必要になると思います. scikit-learn のクラスオブジェクトは, pickle または joblib モジュールを利用して保存できます. 公式ドキュメントの “3.4. Model persistence” で示唆されるように, サイズの大きな配列を含むことが多いため joblib が適していると思われます. ただし, これらは対応するモジュールのバージョンが変わると正常に読み込めなくなる場合があることに注意してください28.

from joblib import dump, load
est = ESTIMATOR()
est.fit(X, y)
# 保存
dump(est, '<ファイルパス>') 

# 読み込み
est = load('<ファイルパス>')

  1. 新しいモジュールを試す際はシリアライズ後も結果を再現できるかにも注意すべきでしょう. Python 3.7 以降は注意する必要はありませんが, かつてはディクショナリは要素の順序は保存されないという仕様でした. よって当時のディクショナリはシリアライズして読み込む度に順序が変わりますが, とある統計モデリング用モジュールでこの仕様が原因のバグを見つけたことがあります.↩︎