Построение модели машинного обучения — это только первый шаг, во многих случаях вам потребуется получить доступ к построенным моделям позже, чтобы ускорить процесс обучения, или размеры данных для каждой модели разные. В этом обзоре я представляю различные подходы в Python, чтобы сохранить вашу обученную модель и загрузить их позже в ваш алгоритм.

Обратите внимание, что этот обзор является общим руководством, и вы можете использовать его для любой построенной модели из различных библиотек, таких как Sklearn, TensorFlow и т. д.

В этом руководстве я начинаю с простых подходов, таких как словари и списки, а затем объясняю самые сложные.

Вы можете найти некоторые похожие примеры в моих работах на моем GitHub, а если у вас есть какие-либо вопросы, вы можете задать их мне, создав вопрос на моем GitHub или в обсуждении.

Этот учебник разделен на четыре части следующим образом;

  1. Словарь
  2. Список
  3. соленый огурец
  4. NumPy-массив

Я рассказываю о преимуществах и недостатках каждой стратегии и привожу фрагмент кода и пример для каждой части.

Словарь

Первая стратегия — создание словаря на питоне для разных обученных моделей. Окончательной обученной моделью будет объект dtype, поэтому вы можете добавить его в отдельный ключ в своем словаре.

models = {}
k = 5
for i in range(k):
    model_ = model.fit(X, y)
    models[i] = model_

Здесь у вас будет словарь, включающий разные модели в качестве ключа словаря. Чтобы вызвать конкретную модель, вы вызываете элемент словаря, который ищете.

models[1].predict(X)

Между списком и словарем я предпочитаю словарь, потому что вы можете иметь список с порядком и вызывать модель с нужным вам порядком.

Список

Другой простой подход — составить список в Python. Вы можете добавить свой список для каждой недавно обученной модели, которая является объектом Python.

list_ = []
list_.append(model_)

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

соленый огурец

Pickle — известный модуль Python для сериализации двоичных объектов. Следовательно, они могут быть хорошим методом сброса обученных моделей. Я предлагаю использовать этот метод, когда у вас есть тот же компьютер, когда вы собираетесь загружать обученные модели. Я предлагаю использовать этот метод, когда у вас есть тот же компьютер, когда вы собираетесь загружать обученные модели.

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

Обязательно используйте клавишу «wb» для записи в виде двоичного файла.

pickle.dump(model, open(model_name, "wb"))

позже вы можете загрузить свою модель с помощью метода загрузки.

model = pickle.load(open(model_name, "rb"))

После дампа моделей у вас будет каталог, содержащий модели ML. Чтобы иметь ясный и чистый алгоритм, вы можете определить параметр управления для очистки моделей дампа после их использования.

Например;

import os
def _clear():
  for root, _, models in os.walk(path):
     for model in models:
        os.remove(os.path.join(root, model))

NumPy-массив

И последнее, но не менее важное — наш друг массив NumPy. Вы можете воспользоваться преимуществами массива NumPy, чтобы сохранить обученные модели в матричной форме. Для этого вам нужно сначала определить пустой массив. Обязательно укажите dtype в матрице, которая является объектом.

import numpy as np
n=10
models = np.empty((n, 1), dtype=object)
for i in range(n):
   model_ = model()
   model_.fit(X, y)
   models[i, 0] = model

Здесь мы сохранили подобранную модель в массиве. Вы можете изменить размер или создать массив с большим количеством измерений. Это зависит от вашей работы.

Заключение
В этом посте мы узнали о четырех различных способах сохранения обученных моделей машинного обучения, и они являются общими подходами, что означает, что вы можете использовать любую библиотеку для построения модели и ее хранения. с одним из этих подходов.
Я предлагаю проверить ваши версии Python и библиотеки, когда вы хотите сбросить свою модель в двоичные объекты.

Если вы заинтересованы в изучении более сложных методов, вы можете подписаться на меня на GitHub и просмотреть некоторые из моих кодов.