Введение

После нескольких месяцев повторения одних и тех же задач по преобразованию данных и машинному обучению в различных наборах данных я решил удалить всю избыточность в своем основном рабочем процессе обработки данных. Вдохновленный пакетом caret Макса Куна, я надеялся написать критически важные функции один раз, а затем каждый раз повторно использовать их; главное правило информатики; модульность. Пакет caret отлично справляется с этой задачей, однако я обнаружил, что в Python такой функциональности не хватает. В пакете sklearn, безусловно, есть класс Pipeline, но каждый раз, когда ему нужен новый рабочий процесс, все равно приходится переписывать или копировать шаблонный код.

Решение

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

Меры заслуг

По умолчанию пакет предлагает более 33 прогностических моделей, 10 преобразований и 10 методов выбора признаков с намерением расширяться по мере появления новых методов и приемов в рабочих процессах сообщества. Этот пакет нацелен на достижение трех целей: скорость, согласованность и креативность. Скорость относится к процессу выбора модели и функций, согласованность относится к стабильности самого пакета, а креативность относится к предоставлению пользователям песочницы функциональности, которую они могут объединять любым количеством способов для быстрого и уникального получения наилучших результатов.

Установка

Пакет довольно прост в установке,

pip установить -U streamml2

После того, как все его зависимости будут установлены, вы можете запускать руководства, упомянутые далее в этом посте.

Философия

Поэтому, прежде чем я отошлю вас к какому-либо коду, мне кажется благоразумным небольшой урок философии. Цель этого пакета — упростить задачи машинного обучения. Однако может возникнуть вопрос, что не все части процесса машинного обучения одинаковы, преобразованиям не нужны переменные отклика, выбору функций не нужны метрики, а выбору модели не нужно решать, какие функции оставить. Каждое из этих различий определяет немного отличающуюся парадигму просмотра и работы с данными. Итак, я разбил парадигмы на три логические категории (т. е. три уникальных потока); TransformationStream, FeatureSelectionStream и ModelSelectionStream. Каждый класс потока создается немного по-разному, но для каждого из них требуется как минимум набор данных в формате pandas фрейма данных. Кроме того, каждый поток имеет свою собственную функцию потока, которая уникальным образом обрабатывает последовательный поток информации, передаваемой по потоку.

Примеры

Отбросив теорию, я предлагаю всем заинтересованным практикам ознакомиться с учебными пособиями: https://github.com/conradbm/streamml2/tree/master/streamml2/tutorials. Пять блокнотов в папке с учебными пособиями. пройти около 99% функциональности, а оставшийся 1% - это простое изменение параметров. Поскольку мне еще предстоит собрать настоящую документацию, обучение на примерах — единственный способ прямо сейчас.

Источник проекта

Одно из первых мест, куда я обращаюсь при использовании нового API, — это их исходный код, поэтому я хочу прямо сейчас связать его со всеми: https://github.com/conradbm/streamml2.

Содействие

Настоящая красота streamml2 заключается не в том, что он предлагает сегодня, а в том, что он надеется сделать для будущих рабочих процессов обработки данных. Поскольку мир искусственного интеллекта, машинного обучения и науки о данных меняется так быстро, каждый день создаются новые методы на основе современных библиотек глубокого обучения, таких как tensorflow, kerasи pytorch и библиотеки машинного обучения, такие как sklearn. При этом структура проекта предназначена для простоты внесения вклада. На самом деле в пакете есть только три основных места, где можно разместить расширения: по корневой ссылке, перейти в раздел streamml2, затем оптимизировать, затем появляются три папки с метками feature_selection, model_selection и transform. Это основное место для дополнительного функционала. Фактическое преобразование или выбор всегда происходит в классе потока, который находится в каждой из папок потока, упомянутых выше. Я попытался скрыть все основные детали в классах за пределами класса потока. Пожалуйста, делитесь любыми идеями или вкладами в запросе на вытягивание или проблеме на нашей странице GitHub.

Вывод

Пакет streamml2 имеет полностью открытый исходный код и может принести мгновенную пользу любому стеку обработки данных. Надеюсь, что это облегчит жизнь всем остальным так же, как помогло мне. Я очень активно отвечаю на GitHub и пишу по электронной почте, поэтому задайте мне вопрос или комментарий, и я буду рад связаться с вами.