Существует множество статей, посвященных различным инструментам и библиотекам машинного обучения, в которых подробно рассматривается «научная» часть подготовки ваших данных, обучения вашей модели и, наконец, ее использования для проницательных прогнозов. Теперь, когда у вас есть довольно точная модель (или модели), с которыми вам удобно работать, вам нужно где-то ее хранить и иметь возможность доступа к ней, когда придет время прогнозировать.

Приходит маринование:

Стандартный метод хранения модели заключается в ее сериализации с помощью рассола, который довольно прост в использовании:

Видеть? очень просто.. Но допустим, у вас есть несколько экземпляров модели, и вам нужно хранить их в своей БД в нескольких версиях для каждого отдельного «предсказуемого» объекта, и что каждый класс модели фактически состоит из других множественных классов прогнозирования, и это дает среднее значение комбинированных прогнозов.

Таким образом, вы могли бы начать с того, что мы только что сделали, и замариновать все, что было бы хорошим началом, чтобы все заработало, но внезапно вы понимаете, что когда вы сериализуете экземпляр этого класса модели, вы также сохраняете некоторые общие методы для каждого Экземпляр модели вы сохраняете в БД и спрашиваете себя, есть ли более экономичный способ хранения моей модели? ну да есть..

Рассолите только вещи, связанные с состоянием:

Когда мы сохраняем экземпляр нашей модели, мы можем удалить все общие методы «класса» и оставить только то, что является уникальными атрибутами экземпляра модели. Мы делаем это, создавая более компактную версию нашего класса только с атрибутами, которые сохраняют состояние.

Посмотрите на следующий пример сериализации и десериализации:

Процесс привязки метода:

после того, как мы получили наш экземпляр LeanModel, который мы распаковали, мы используем types.MethodType для динамической привязки функции прогнозирования или любой другой общей функции (которая должна быть похожа и обратно совместима со всеми экземплярами нашей модели) к экземпляру модели.

Итак, чтобы сохранить/загрузить модель, вы можете вызвать функции сериализации и десериализации: