Сохранение и загрузка классификатора в scikit-learn

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для сохранения классификатора scikit-learn предпочтение отдаётся joblib:

Чтобы сохранить классификатор clf в файл 'model.joblib' для последующего использования:

Python
Скопировать код
from joblib import dump
dump(clf, 'model.joblib', compress=9)  # Применяем наивысший уровень сжатия для увеличения эффективности.

Когда возникнет необходимость использовать классификатор в дальнейшем:

Python
Скопировать код
from joblib import load
clf = load('model.joblib')  # Загружаем модель, она готова к использованию.

С joblib даже обширные массивы numpy сжимаются на уровне 9.

Кинга Идем в IT: пошаговый план для смены профессии

Работа с комбинацией классификатора и векторизатора

Иногда требуется сохранить не только классификатор, но и весь пайплайн, в который может входить векторизатор, например, TfIdfVectorizer. Процесс следующий:

Для сохранения:

Python
Скопировать код
dump(vectorizer, 'vectorizer.joblib')
dump(clf, 'classifier.joblib')  # Направляем clf на заслуженный отдых.

Для загрузки:

Python
Скопировать код
vectorizer = load('vectorizer.joblib')  # Векторизатор проснулся и готов к работе.
clf = load('classifier.joblib')  # Классификатор готов начать новый день.

Сохранение обеих компонент пайплайна в формате '.joblib' гарантирует возможность трансформации данных и выполнения прогнозов по мере необходимости.

Советы для повышения эффективности модели

Pickle подходит для большинства задач, однако joblib более предпочтителен для объектов с обширными массивами numpy, что связано со спецификой сериализации.

Перед сохранением не забывайте оптимизировать модель. Обучите классификатор, применив clf.fit(). Для сокращения объема хранилища удаляйте stop_words_ у векторизаторов.

Визуализация

Можно представить joblib как магический палочку, упаковывающую ваш классификатор для отдыха в файл с расширением '.joblib':

Markdown
Скопировать код
🍾 🚢💤 **Классификатор** отдыхает в 'joblib'

Волшебное заклинание для отправления классификатора на отдых:

Python
Скопировать код
import joblib
joblib.dump(clf, 'classifier_in_a_bottle.joblib', compress=9)  # Желаем спокойных снов!

И вот ваш классификатор уже снова с вами:

Markdown
Скопировать код
🏡🌺🚁  Классификатор проснулся полон сил и готов к новым задачам!

Волшебное заклинание для его пробуждения:

Python
Скопировать код
clf = joblib.load('classifier_in_a_bottle.joblib')  # Пора просыпаться!

Классификатор как будто только что проснулся и готов делать точные прогнозы!

Спарсное хранение и версионирование классификаторов

Применяйте спарсивные матрицы. Для моделей типа SGDClassifier с большими весовыми матрицами переводите их в спарсивный формат.

Учитывайте версию scikit-learn. Ведь версионные различия могут повлиять на совместимость моделей, и лучше избежать столкновения с такой проблемой.

Управление продвинутыми функциями

Будьте бдительны с ансамблевыми методами. При использовании, например, RandomForest убедитесь, что сохранение состояния корректно выполнено при помощи метода __getstate__(), если он доступен.

Хорошо бы также сохранить:

  • Метаданные, например, имена классов, характеристики обучающих данных.
  • Фиксируйте результаты кросс-валидации или параметры для отслеживания контекста модели.

Экономное использование дискового пространства

Когда место на диске оказывается на вес золота, параметр compress=9 в функции dump уменьшит занимаемый объем. Хотя это может занять больше времени, но зато сэкономит место на диске.

Полезные материалы

  1. Сохранение моделей в scikit-learn — Комплексное руководство по сохранению моделей scikit-learn.
  2. Сохранение данных с joblib — Все, что вы хотели узнать о joblib.
  3. Rpy2 – Обработка датафреймов — Обсуждение механизмов сохранения моделей на StackOverflow.
  4. Статья на Medium о моделях Scikit Learn — Аналитическая статья о scikit-learn на Medium.
  5. pickle — Сериализация объектов в Python — Осваиваем сериализацию с помощью pickle.
  6. Сохранение и загрузка моделей машинного обучения — Практическое руководство для работы с моделями.
  7. Модели Scikit Learn на YouTube — Видеоуроки о сохранении и загрузке моделей.