Изучение последних улучшений и функций PyCaret 3.0
В этой статье:
- Введение
- Модуль прогнозирования стабильных временных рядов
- Новый объектно-ориентированный API
- Дополнительные параметры для регистрации экспериментов
- Рефакторинг модуля предварительной обработки
- Совместимость с последней версией sklearn
- Распределенное параллельное обучение модели
- Ускорьте обучение модели на ЦП
- RIP: модуль НЛП и правил
- Больше информации
- Авторы
Введение
PyCaret — это библиотека машинного обучения с открытым исходным кодом на Python, которая автоматизирует рабочие процессы машинного обучения. Это комплексный инструмент машинного обучения и управления моделями, который экспоненциально ускоряет цикл экспериментов и повышает вашу продуктивность.
По сравнению с другими библиотеками машинного обучения с открытым исходным кодом, PyCaret представляет собой альтернативную библиотеку с низким кодом, которую можно использовать для замены сотен строк кода всего несколькими строками. Это делает эксперименты экспоненциально быстрыми и эффективными. PyCaret — это, по сути, оболочка Python для нескольких библиотек и фреймворков машинного обучения в Python.
Дизайн и простота PyCaret вдохновлены растущей ролью гражданских специалистов по данным — термин, впервые использованный Gartner. Граждане-специалисты по данным — это опытные пользователи, которые могут выполнять как простые, так и умеренно сложные аналитические задачи, которые ранее требовали большего количества технических знаний.
Чтобы узнать больше о PyCaret, посетите наш GitHub или Официальные документы.
Ознакомьтесь с нашими полными Примечаниями к выпуску для PyCaret 3.0.
📈 Модуль прогнозирования стабильных временных рядов
Модуль временных рядов PyCaret теперь стабилен и доступен в версии 3.0. В настоящее время он поддерживает задачи прогнозирования, но в будущем планируется добавить алгоритмы обнаружения аномалий временных рядов и кластеризации.
# load dataset from pycaret.datasets import get_data data = get_data('airline') # init setup from pycaret.time_series import * s = setup(data, fh = 12, session_id = 123) # compare models best = compare_models()
# forecast plot plot_model(best, plot = 'forecast')
# forecast plot 36 days out in future plot_model(best, plot = 'forecast', data_kwargs = {'fh' : 36})
💻 Объектно-ориентированный API
Хотя PyCaret — фантастический инструмент, он не соответствует типичным методам объектно-ориентированного программирования, используемым разработчиками Python. Чтобы решить эту проблему, нам пришлось переосмыслить некоторые первоначальные дизайнерские решения, которые мы приняли для версии 1.0. Важно отметить, что это важное изменение, для реализации которого потребуются значительные усилия. Теперь давайте посмотрим, как это повлияет на вас.
# Functional API (Existing) # load dataset from pycaret.datasets import get_data data = get_data('juice') # init setup from pycaret.classification import * s = setup(data, target = 'Purchase', session_id = 123) # compare models best = compare_models()
Замечательно проводить эксперименты в одном и том же блокноте, но если вы хотите провести другой эксперимент с другими параметрами функции настройки, это может стать проблемой. Хотя возможно, настройки предыдущего эксперимента будут заменены.
Однако с нашим новым объектно-ориентированным API вы можете легко проводить несколько экспериментов в одном блокноте и без труда сравнивать их. Это связано с тем, что параметры связаны с объектом и могут быть связаны с различными параметрами моделирования и предварительной обработки.
# load dataset from pycaret.datasets import get_data data = get_data('juice') # init setup 1 from pycaret.classification import ClassificationExperiment exp1 = ClassificationExperiment() exp1.setup(data, target = 'Purchase', session_id = 123) # compare models init 1 best = exp1.compare_models() # init setup 2 exp2 = ClassificationExperiment() exp2.setup(data, target = 'Purchase', normalize = True, session_id = 123) # compare models init 2 best2 = exp2.compare_models()
После проведения экспериментов вы можете использовать функцию get_leaderboard
для создания таблиц лидеров для каждого эксперимента, что упростит их сравнение.
import pandas as pd # generate leaderboard leaderboard_exp1 = exp1.get_leaderboard() leaderboard_exp2 = exp2.get_leaderboard() lb = pd.concat([leaderboard_exp1, leaderboard_exp2])
# print pipeline steps print(exp1.pipeline.steps) print(exp2.pipeline.steps)
📊 Дополнительные параметры для регистрации экспериментов
PyCaret 2 может автоматически регистрировать эксперименты, используя MLflow
. Хотя он по-прежнему используется по умолчанию, в PyCaret 3 есть больше параметров для регистрации экспериментов. Недавно добавленные параметры в последней версии: wandb
, cometml
, dagshub
.
Чтобы изменить регистратор с MLflow по умолчанию на другие доступные параметры, просто передайте один из следующих параметров в параметреlog_experiment
. «mlflow», «wandb», «cometml», «dagshub».
🧹 Рефакторинг модуля предварительной обработки
Модуль предварительной обработки был полностью переработан для повышения его эффективности и производительности, а также для обеспечения совместимости с последней версией Scikit-Learn.
PyCaret 3 включает в себя несколько новых функций предварительной обработки, таких как инновационные методы категориального кодирования, поддержка текстовых функций в моделировании машинного обучения, новые методы обнаружения выбросов и расширенные методы выбора функций.
Вот некоторые из новых функций:
- Новые методы категориального кодирования
- Обработка текстовых функций для моделирования машинного обучения
- Новые методы обнаружения выбросов
- Новые методы выбора признаков
- Гарантия предотвращения целевых утечек, так как весь трубопровод теперь установлен на уровне сгиба.
✅ Совместимость с последней версией sklearn
PyCaret 2 сильно зависит от scikit-learn 0.23.2, что делает невозможным использование последней версии scikit-learn (1.X) одновременно с PyCaret в той же среде.
PyCaret теперь совместим с последней версией scikit-learn, и мы хотели бы оставить ее такой.
🔗 Распределенное параллельное обучение модели
Для масштабирования больших наборов данных вы можете запустить функцию compare_models
на кластере в распределенном режиме. Для этого вы можете использовать параметр parallel
в функции compare_models
.
Это стало возможным благодаря Fugue, унифицированному интерфейсу с открытым исходным кодом для распределенных вычислений, который позволяет пользователям выполнять код Python, Pandas и SQL на Spark, Dask и Ray с минимальными изменениями.
# load dataset from pycaret.datasets import get_data diabetes = get_data('diabetes') # init setup from pycaret.classification import * clf1 = setup(data = diabetes, target = 'Class variable', n_jobs = 1) # create pyspark session from pyspark.sql import SparkSession spark = SparkSession.builder.getOrCreate() # import parallel back-end from pycaret.parallel import FugueBackend # compare models best = compare_models(parallel = FugueBackend(spark))
🚀 Ускорьте обучение модели на процессоре
Вы можете применить оптимизацию Intel для алгоритмов машинного обучения и ускорить свой рабочий процесс. Для обучения моделей с оптимизацией Intel используйте движок sklearnex
, требуется установка библиотеки Intel sklearnex:
# install sklearnex pip install scikit-learn-intelex
Чтобы использовать оптимизацию Intel, просто передайте engine = 'sklearnex'
в функцию create_model
.
# Functional API (Existing) # load dataset from pycaret.datasets import get_data data = get_data('bank') # init setup from pycaret.classification import * s = setup(data, target = 'deposit', session_id = 123)
Обучение модели без ускорений Intel:
%%time lr = create_model('lr')
Обучение модели с ускорением Intel:
%%time lr2 = create_model('lr', engine = 'sklearnex')
Есть некоторые различия в производительности модели (в большинстве случаев несущественные), но улучшение времени составляет ~ 60% для набора данных из 30 000 строк. Преимущество намного выше при работе с большими наборами данных.
⚰️ ️RIP: модуль НЛП и правил
НЛП быстро меняется, и существует множество специализированных библиотек и компаний, работающих исключительно над решением комплексных задач НЛП. Из-за нехватки ресурсов, существующего опыта в команде и новых участников, желающих поддерживать и поддерживать NLP и Arules, мы решили исключить их из PyCaret. В PyCaret 3.0 нет модулей nlp
и arules
. Он также был удален из документации. Вы все еще можете использовать их со старой версией PyCaret.
ℹ️ Дополнительная информация
📚 Документы Начало работы с PyCaret
📝 Справочник по API Подробная документация по API
⭐ Учебники Впервые в PyCaret? Ознакомьтесь с нашими официальными блокнотами
📋 Блокноты, созданные и поддерживаемые сообществом
📙 Блог Учебники и статьи участников
📺 Видео Видеоуроки и мероприятия
🎥 YouTube Подписывайтесь на наш YouTube канал
🤗 Slack Присоединяйтесь к нашему slack-сообществу
💻 LinkedIn Подпишитесь на нашу страницу в LinkedIn
📢 Обсуждения Взаимодействуйте с сообществом и участниками
Авторы
Спасибо всем участникам, принимавшим участие в PyCaret 3.
@ngupta23
@Yard1
@tvdboom
@jinensetpal
@goodwanghan
@Alexsandruss
@daikikatsuragawa
@caron14
@sherpan
@haizadtarik
@ethanglaser
@kumar21120
@satya-pattnaik
@ltsaprounis
@sayantan1410
@AJarman
@drmario -gh
@NeptuneN
@Abonia1
@LucasSerra
@desaizeeshan22
@rhoboro
@jonasvdd
@PivovarA
@ykskks
@chrimaho
@AnthonyA1223
@ArtificialZeng
@cspartalis
@vladocodes
@huangzhhui
@keisuke-umezawa
@ryankarlos
@celestinoxp
@qubiit
@beckernick
@napetrov
@erwanlc
@Danpilz
@ryanxjhan
@wkuopt
@TremaMiguel
@IncubatorShokuhou
@moezali1
Понравился блог? Свяжитесь с Моезом Али
Моэз Али — новатор и технолог. Специалист по данным, ставший менеджером по продуктам, посвятил себя созданию современных и передовых продуктов для обработки данных и развитию активных сообществ с открытым исходным кодом вокруг них.
Создатель PyCaret, более 100 публикаций с 500+ цитированиями, основной докладчик и всемирно признанный вклад в Python с открытым исходным кодом.
Давай будем друзьями! связаться со мной:
👉 LinkedIn
👉 Twitter
👉 Medium
👉 YouTube
🔥 Посетите мой новый личный сайт: https://www.moez.ai.
Чтобы узнать больше о моей работе с открытым исходным кодом: PyCaret, вы можете проверить этот репозиторий GitHub или подписаться на официальную страницу LinkedIn PyCaret.
Послушайте мой доклад Прогнозирование временных рядов с помощью PyCaret на DATA+AI SUMMIT 2022 от Databricks.