Введение в PyCaret

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

PyCaret — это, по сути, оболочка Python для нескольких библиотек и фреймворков машинного обучения, таких как scikit-learn, XGBoost, LightGBM, CatBoost, spaCy и многих других.

Обзор

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

  1. Контролируемое ОД
     – Классификация
     – Регрессия
  2. Неконтролируемое машинное обучение
    - Кластеризация
    - Обнаружение аномалий
    - Обработка естественного языка
    - Анализ правил ассоциации
  3. Временные ряды (бета)
  4. Наборы данных

В этом блоге я покажу, как PyCaret использует двоичную классификацию для Набора данных клиентов кредитных карт по умолчанию.

Начиная

PyCaret можно установить с помощью менеджера пакетов Python pip.

pip install pycaret
#for full version installation
pip install pycaret[full]

Давайте сначала импортируем PyCaret.

import pycaret

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

# loading the dataset
from pycaret.datasets import get_data
data = get_data('credit')

Теперь, в зависимости от типа эксперимента, над которым мы работаем, мы можем импортировать соответствующие модули.

#for Regression
from pycaret.regression import *
#for Classification
from pycaret.classification import *
#for Clustering
from pycaret.clustering import *
#for Anomaly Detection
from pycaret.anomaly import *
#for NLP
from pycaret.nlp import *
#for association rule mining
from pycaret.arules import *

Теперь следующий шаг — инициализация установки. Это необходимо сделать перед любым экспериментом по машинному обучению.

model = setup(data = dataframe_name, target = 'target_variable')

Итак, для нашей модели у нас будет следующий код для настройки.

# init setup
from pycaret.classification import *
s = setup(data = data, target = ‘default’, session_id=123)

Сравнить модели

Эта функция сравнивает каждую модель, представленную в PyCaret, в зависимости от постановки задачи.
Обучение каждой модели выполняется с использованием гиперпараметров по умолчанию, а показатели производительности оцениваются с помощью перекрестной проверки.

Результатом функции является таблица, показывающая средний балл всех моделей по складкам. Количество складок можно определить с помощью параметров fold в функции compare_models. По умолчанию для кратности установлено значение 10. Таблица сортируется (от большего к меньшему) по выбранному показателю и может быть определена с помощью параметра sort. По умолчанию таблица отсортированы по точности для экспериментов по классификации и R2 для экспериментов по регрессии. Некоторые модели исключены для сравнения из-за их более длительного времени работы. Чтобы обойти это ограничение, для параметра turbo можно установить значение False.

Чтобы выбрать первые n номеров модели, включите гиперпараметр n_select в функцию compare_models. Мы даже можем отсортировать его по метрикам.

best_model = compare_models(n_select = n, sort ‘ AUC’)

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

#get the model performances
best_model = compare_models()

Создайте и настройте модель

Как следует из названия, функция create_model обучает и оценивает модель с помощью перекрестной проверки, которую можно установить с помощью параметра fold. На выходе распечатывается оценочная сетка, которая показывает точность, AUC, полноту, точность, F1, каппа и MCC в кратном порядке.

Для демонстрационной цели мы просто продолжим и создадим модель случайного классификатора леса.

#create model
rf = create_model('rf')

Когда модель создается с помощью функции create_model, она использует гиперпараметры по умолчанию для обучения модели. Для настройки гиперпараметров используется функция tune_model. Эта функция автоматически настраивает гиперпараметры модели, используя случайный поиск по сетке в заранее определенном пространстве поиска. Мы также можем использовать пользовательскую сетку поиска, передав параметр custom_grid в функцию tune_model.

#tune model
tuned_rf = tune_model(rf)

Модель участка

PyCaret также имеет функцию plot_model, которую можно использовать для анализа производительности по различным аспектам, таким как AUC, матрица путаницы, граница решения и т. д. Она принимает объект обученной модели в качестве аргумента и возвращает соответствующий график.

# check the residuals of trained model
plot_model(best_model, plot = 'auc')

# check the residuals of trained model
plot_model(best_model, plot = 'pr')

# check the residuals of trained model
plot_model(best_model, plot = 'feature')

# check feature importance
plot_model(best_model, plot = 'confusion_matrix')

Завершить и сохранить пайплайн

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

# finalize the model
final_best = finalize_model(best_model)
# save model to disk
save_model(final_best, 'Binary Classification Model PyCaret')

save_model сохранит весь конвейер (включая модель) в виде файла рассола на локальном диске. По умолчанию он сохранит файл в той же папке, что и ваш блокнот или скрипт, но вы также можете указать полный путь, если хотите:

save_model(final_best, 'path/Binary-Classification-Model-PyCaret'

На этом мы подошли к концу этого вводного блога о PyCaret. Мы рассмотрели весь конвейер машинного обучения, начиная с приема данных, предварительной обработки, модели обучения, настройки гиперпараметров, анализа графиков и сохранения модели для последующего использования.

Надеюсь, поможет!