Сохранение модели и векторизатора как pickle

Модуль pickle реализует двоичные протоколы для сериализации и десериализации структуры объекта Python. Обработка - это процесс, при котором иерархия объектов Python преобразуется в поток байтов, а распаковка - обратная операция, при которой поток байтов (из двоичного файла или байтового объекта) преобразуется обратно в иерархию объектов. Травление (и распаковка) также известно как сериализация, сортировка или сплющивание; однако, чтобы избежать путаницы, здесь используются термины травление и отклеивание.

- источник: https://docs.python.org/3/library/pickle.html

Почему нам нужно сохранять наши алгоритмы для маринования?

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

Вы можете использовать библиотеку «pickle» или «joblib» в Python, чтобы сериализовать свои алгоритмы и сохранить их в файл.

Начнем с примера!

Для демонстрации я использовал набор данных новостей BBC, который вы можете скачать по адресу https://storage.googleapis.com/dataset-uploader/bbc/bbc-text.csv, и линейную модель SVM для обучения. После процесса обучения модель сохраняется как model.pickle, а векторизатор - как vectorizer.pickle. Вы также можете попробовать использовать предварительно обученную модель Google, чтобы получить векторы. Для демонстрации я использовал TfidfVectorizer, который находится в пакете Sklearn.

После запуска кода модель сохраняется как model.pickle и vectorizer.pickle в вашем локальном рабочем каталоге.

Загрузим модель!

Теперь, когда наши модели сохранены, давайте загрузим их с помощью pickle и спрогнозируем класс для новых невидимых данных.

Альт! вы успешно научились сохранять и загружать маринованную модель и делать прогнозы!

Вы также можете попробовать Joblib, чтобы сохранить модели !

import joblib

Обучите свою модель и сэкономьте с помощью

joblib.dump(model, model_path+"model.sav")
joblib.dump(vectorizer_model, vectorizer_path+"vectorizer.sav")

Чтобы загрузить и протестировать модель

#Loading the saved model
def loading_joblibPickle(model_path):
    vectorizer = joblib.load(model_path+"vectorizer.sav")
    model = joblib.load(model_path+"model.sav")
    return vectorizer, model
text = "tv future in the hands of viewers with home"
#load and predict
model_path = Project_path + "/08. Multi-class_text_classification/models/"
vectorizer1, model1 = loading_joblibPickle(model_path)
predict(model1, vectorizer1, text)

Вы можете найти полный код для обоих в Github.