Библиотека машинного обучения с открытым исходным кодом.

PyCaret

Автоматизируйте ключевые шаги для оценки и сравнения алгоритмов машинного обучения.

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

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

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

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

PyCaret - это в основном оболочка python для нескольких библиотек и фреймворков машинного обучения, таких как scikit-learn, XGBoost, CatBoost, LightGBM, spaCy, Optuna, Hyperopt, Ray и многих других. Кроме того, все эти библиотеки очень хорошо организованы и собраны воедино.

Теперь давайте проверим, что эта библиотека Python может делать на примере набора данных. Я буду применять все модели из набора данных Palmer Penguins, который выпущен в виде пакета R компанией Allison Horst. А также он становится альтернативой прекрасному набору данных iris.

Как всегда, первым делом мы устанавливаем pycaret и импортируем необходимые библиотеки.

#!pip install pycaret[full]
import numpy as np
import pandas as pd
from pycaret.regression import *

Следующим шагом является загрузка набора данных о пингвине с помощью библиотеки python pandas.

df = pd.read_csv('penguins.csv')
df.info()
RangeIndex: 333 entries, 0 to 332
Data columns (total 7 columns):
 #   Column             Non-Null Count  Dtype  
---  ------             --------------  -----  
 0   species            333 non-null    object 
 1   island             333 non-null    object 
 2   bill_length_mm     333 non-null    float64
 3   bill_depth_mm      333 non-null    float64
 4   flipper_length_mm  333 non-null    int64  
 5   body_mass_g        333 non-null    int64  
 6   sex                333 non-null    object 
dtypes: float64(2), int64(2), object(3)

Набор данных состоит из 4 числовых признаков, 2 категориальных признаков и одного целевого объекта.

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

clf = setup(
            data=df, 
            target='sex', 
            session_id=44, 
            train_size=0.8
           )

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

И после этого начинается волшебство PyCaret с однострочного кода, compare_models() который сравнивает почти 20 моделей и возвращает результаты в виде таблицы.

best_model = compare_models()

Эта функция обучает все модели в библиотеке моделей и оценивает их с помощью k-кратной перекрестной проверки для оценки показателей. На выходе будет напечатана таблица оценок, в которой показаны средние результаты по складкам (по умолчанию 10), а также время обучения.

Создать лучшую модель

Создать модель в любом модуле так же просто, как написать create_model. . Он принимает только один параметр, то есть имя модели в виде строки.

# create an Extreme Gradient Boosting model
xgboost = create_model("xgboost")

Настройка гиперпараметров

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

tuned_xgboost = tune_model(xgboost)

Эта функция автоматически настраивает гиперпараметры модели, используя Random Grid Search предварительно определенное пространство поиска. На выходе печатается оценочная сетка, в которой результаты отображаются в разрезе. Чтобы использовать настраиваемую сетку поиска, вы можете передать custom_grid параметров в функции tune_model.

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

Анализ производительности обученной модели машинного обучения - неотъемлемый этап любого рабочего процесса машинного обучения. Анализировать производительность модели так же просто, как написать plot_model(). Функция принимает обученный объект модели и тип графика в виде строки внутри plot_model() функции.

plot_model(tuned_xgboost, plot = 'confusion_matrix'

plot_model(tuned_xgboost, plot = 'boundary')

pplot_model(tuned_xgboost, plot = 'class_report')

Прогнозировать и завершить модель

Тест состоит из оставшихся 20% данных, которые PyCaret автоматически разделяет при настройке. Важно убедиться, что модель не переоснащается. Теперь мы будем использовать функцию predict_model(), которая используется для прогнозирования невидимого набора данных.

# Make predictions on the test set
predict_model(tuned_xgboost)

Функция finalize_model() подгоняет модель ко всему набору данных, включая тестовую / выдерживающую выборку (в данном случае 20%). Эта функция предназначена для обучения модели на полном наборе данных перед ее развертыванием в производственной среде.

# Finalize the model
finalized_xgboost = finalize_model(tuned_xgboost)

Когда модель будет завершена с использованием, весь набор данных, включая набор тестов / выдержек, используется для обучения. Если модель используется для прогнозирования набора удержаний после использования finalize_model(), результаты будут вводить в заблуждение, поскольку вы пытаетесь предсказать те же данные, которые использовались для обучения.

Сохранить и загрузить модель

Встроенная функция PyCaret save_model() позволяет нам сохранить модель вместе со всем конвейером преобразования и обученным объектом модели в виде передаваемого двоичного файла pickle для дальнейшего использования.

# Save the final model
save_model(finalized_xgboost, 'penguins_xgboost_v4')

Чтобы загрузить сохраненную модель в будущем в той же или альтернативной среде, мы могли бы использовать функцию PyCaret load_model(), а затем легко применить сохраненную модель к новым невидимым данным для прогнозирования.

(Pipeline(memory=None,
          steps=[('dtypes',
                  DataTypes_Auto_infer(categorical_features=[],
                                       display_types=True, features_todrop=[],
                                       id_columns=[],
                                       ml_usecase='classification',
                                       numerical_features=[], target='species',
                                       time_features=[])),
                 ('imputer',
                  Simple_Imputer(categorical_strategy='not_available',
                                 fill_value_categorical=None,
                                 fill_value_numerical=None,
                                 numeric_stra...
                                interaction_constraints='', learning_rate=0.4,
                                max_delta_step=0, max_depth=8,
                                min_child_weight=3, missing=nan,
                                monotone_constraints='()', n_estimators=140,
                                n_jobs=-1, num_parallel_tree=1,
                                objective='multi:softprob', random_state=44,
                                reg_alpha=0.1, reg_lambda=1e-07,
                                scale_pos_weight=12.100000000000001, subsample=1,
                                tree_method='auto', use_label_encoder=True,
                                validate_parameters=1, verbosity=0)]],
          verbose=False),
 'finalized_xgboost_model_2021-04-11 12:39.pkl')

Если у вас есть время и мощная вычислительная система (GPU или TPU), вы можете легко попробовать применить ансамблевые и стековые модели с PyCaret с большой радостью.

Вы можете получить доступ ко всем этим и многим другим тестам из ресурсов. Будьте счастливы и продолжайте кодировать с PyCaret…

Ресурсы: