Перейти к содержанию

Сохранение и загрузка

Сохранение и загрузка модели без потери метаданных. Стандартные save_model и load_model сохраняют деревья, но best_iteration_, имена колонок и порядок меток классов могут потеряться. cbx.io.save записывает рядом с файлом модели небольшой JSON-файл с метаданными, а cbx.io.load его читает.

from catboost_utils.io import save, load

save(model, "artifact.cbm")          # запишет artifact.cbm и artifact.cbm.meta.json
restored = load("artifact.cbm")      # восстановит best_iteration и выберет нужный класс модели

В JSON-файл сохраняются: версия catboost_utils, версия catboost, тип модели (classifier, regressor или просто catboost), имена колонок, индексы категориальных колонок, имена классов, best_iteration, параметры обучения и время сохранения.

load работает и без файла с метаданными — просто запишет предупреждение в лог. Это значит, что любые .cbm-файлы, сохранённые без cbx.io.save, тоже загружаются, но без метаданных.

catboost_utils.io.persistence.save

save(
    model: Any,
    path: str | PathLike[str],
    *,
    format: str = "cbm",
) -> None

Save model to path and write a metadata sidecar.

Parameters:

Name Type Description Default
model Any

a fitted CatBoost / CBX model.

required
path str | PathLike[str]

target file path.

required
format str

forwarded to model.save_model(format=...)"cbm" (default), "json", "onnx", etc.

'cbm'

catboost_utils.io.persistence.load

load(
    path: str | PathLike[str], *, format: str = "cbm"
) -> CatBoost

Load a model previously saved via save().

Parameters:

Name Type Description Default
path str | PathLike[str]

model file path.

required
format str

passed to CatBoost's load_model.

'cbm'

Returns:

Type Description
CatBoost

A fitted CatBoostClassifier / CatBoostRegressor / CatBoost

CatBoost

instance with metadata reattached when a sidecar is present.