Опенсорс-библиотеки для Python: 40+ вариантов, как упростить жизнь начинающего дата-сайентиста

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

«Удовольствие от программирования на Python должно заключаться в том, чтобы видеть короткие, лаконичные, удобочитаемые классы, которые выражают множество действий в небольшом количестве ясного кода, а не в грудах пустых символов, утомляющих читающего до смерти».

— Гвидо Ван Россум, создатель языка Python.

32 года гениальное творение Гвидо ван Россума входит в число наиболее востребованных и универсальных языков программирования в мире. Сообщество Python объединяет свыше 15 миллионов разработчиков, а за счет простого синтаксиса и возможности быстрого обучения продолжает постоянно пополняться новыми членами.

Для Python существует более 137 тысяч библиотек с открытым исходным кодом, автоматизирующих работу в разных областях — от отдельных рутинных рабочих процессов в компаниях до создания сложных многофункциональных приложений. Одна из самых популярных областей применения «змеиного языка» — наука о данных, а также задачи, связанные с искусственным интеллектом и машинным обучением.

В этой обширной «шпаргалке» для начинающих AI/ML специалистов мы собрали опенсорсные библиотеки Python, сгруппированные по областям практического применения. Этот список с кратким описанием функций каждого инструмента будет полезен всем, кто постоянно работает с «Питоном» и ищет эффективные инструменты для решения возникающих задач.

Важно! Учитывая пересечение функциональных областей различных направлений науки о данных, представленные здесь библиотеки и фреймворки могут (и по идее должны) одновременно находиться в разных подразделах списка. Однако мы сознательно избежали такого «повторения», чтобы описать как можно больше инструментов Python и не создавать ненужной путаницы у новичков.

Машинное обучение

PyTorch 

Специализация: глубокое обучение, компьютерное зрение, обработка естественного языка
Лицензия: BSD
Документация: сайт

PyTorch — ML-библиотека с открытым исходным кодом была создана группой исследователей ИИ Facebook на основе библиотеки Torch с целью обеспечить максимальную гибкость и скорость обучения моделей.

Особенности PyTorch:

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

  • Гибкий, интуитивно понятный интерфейс для создания и обучения моделей глубокого обучения.

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

  • Тензорные вычисления с поддержкой ускорения графического процессора.

TensorFlow 

Специализация: нейронные сети, машинное обучение, глубокое обучение
Лицензия: Apache 2.0
Документация: сайт

Опенсорсная библиотека Python с открытым исходным кодом для высокопроизводительных числовых вычислений, разработанная исследователями Google Brain. По сути, TensorFlow — это структура для определения и выполнения вычислений с использованием тензоров, которые являются частично определенными вычислительными объектами, в конечном итоге производящими значение.

Особенности TensorFlow:

  • Улучшенная нативная визуализация вычислительного графа.

  • Снижает количество ошибок на 50–60 % при машинном обучении нейронов.

  • Параллельные вычисления для выполнения сложных моделей.

  • Беспрепятственное управление библиотекой при поддержке Google.

  • Простота в использовании обеспечивает быструю отладку.

  • Библиотека включает в себя различные хелперы слоев (tflearn, tf-slim, skflow), которые делают ее еще более функциональной.

  • Быстрые обновления и регулярные новые выпуски с дополнительными функциями.

  • TensorFlow не имеет функции символических циклов.

Keras 

Специализация: нейронные сети, глубокое обучение
Лицензия: Apache 2.0
Документация: сайт

Keras — это высокоуровневый API нейронной сети на основе Python и фреймворк, который может работать поверх TensorFlow, CNTK или Theano.

Особенности Keras:

  • Хотя во многих аспектах Keras похож на Tensorflow, он разработан с учетом подхода, ориентированного на человека, чтобы сделать ML и DL более доступными.

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

  • Поддерживает типичные функции нейронных сетей — уровни, функции активации, функции потерь и оптимизаторы.

  • Быстрое выполнение различных итераций DL с полными возможностями развертывания.

  • Поддержка больших кластеров GPU и TPU, обеспечивающая машинное обучение на Python в промышленных масштабах.

Pandas 

Специализация: анализ данных, дата-сайенс
Лицензия: BSD-3-Clause
Документация: сайт

Pandas (Python data analysis) — библиотека Python на основе NumPy, которая поддерживает различные структуры данных и операции для эффективного манипулирования числовыми данными и временными рядами.

Особенности Pandas:

  • Красноречивый синтаксис и богатые функциональные возможности.

  • Абстракция высокого уровня.

  • Выполняет огромный спектр операций с данными — слияние, изменение формы, выбор, очистку и функции обработки данных.

  • Позволяет импортировать данные из различных форматов файлов, таких как значения, разделенные запятыми, JSON, SQL и Microsoft Excel.

  • Доступны различные методы группировки, объединения и фильтрации данных из дата-сетов.

  • Подходит для задач преобразования и хранения данных (ETL), т. к. поддерживает загрузку файлов CSV в свой формат фрейма данных.

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

SciPy 

Специализация: ML-алгоритмы, дата-сайенс, массивы NumPy
Лицензия: BSD 3-Clause
Документация: сайт, GitHub

Scipy (Scientific Python) — библиотека, построенная поверх NumPy, которая содержит различные модули для оптимизации данных, интеграции и вычислительной статистики.

Особенности SciPy:

  • SciPy предоставляет алгоритмы оптимизации, интегрирования, интерполяции, задач на собственные значения, алгебраических уравнений, дифференциальных уравнений, статистики и многих других классов задач.

  • Библиотека предоставляет дополнительные инструменты для вычисления массивов NumPy и специализированные структуры данных, такие как разреженные матрицы и k-мерные деревья.

  • Поддерживает высокооптимизированные реализации, написанные на низкоуровневых языках, таких как Fortran, C и C++.

  • Высокоуровневый синтаксис облегчает использование.

  • Активное и бурно развивающееся сообщество по всему миру.

Scikit-Learn 

Специализация: анализ данных, дата-сайенс, статистика
Лицензия: BSD 3-Clause
Документация: сайт

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

Особенности Scikit-Learn:

  • Построена на основе ключевых опенсорсных библиотек Python: Numpy, Matplotlib и Scipy.

  • Предлагает множество функций для различных базовых алгоритмов машинного обучения, таких как регрессия, классификация и кластеризация.

  • Возможность повторного использования в различных контекстах.

  • Поддерживается практически всеми алгоритмами машинного обучения — контролируемыми и неконтролируемыми.

  • Используется как для обычного, так и для интеллектуального анализа данных, поэтому популярна у новичков в ML.

Caffe 

Специализация: глубокое обучение, машинное зрение
Лицензия: BSD 2-Clause
Документация: сайт

Caffe (Convolution Architecture for Feature Extraction) — среда для глубокого обучения на языке C++, которая поддерживает интерфейс на Python.

Особенности Caffe:

  • Модели и оптимизация гибко определяются конфигурацией.

  • Расширяемый код, способствующий активной разработке.

  • Высокая скорость, позволяет использовать библиотеку для исследовательских экспериментов и развертывания в промышленности.

  • Развитое сообщество.

Chainer 

Специализация: глубокое обучение, машинное обучение
Лицензия: MIT
Документация: сайт

Мощный и гибкий инструмент Python для построения и обучения глубоких нейронных сетей. Библиотека Chainer была разработана японской компанией Preferred Networks.

Особенности Chainer:

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

  • Использует динамический граф вычислений, что позволяет более гибко и эффективно обучать глубокие нейронные сети.

  • Поддерживает множество архитектур нейронных сетей, включая упреждающие, свёрточные и рекуррентные.

  • Встроенные алгоритмы оптимизации, такие как стохастический градиентный спуск и Adam.

MXNet 

Специализация: глубокое обучение
Лицензия: Apache 2.0
Документация: сайт

Apache MXNet — среда глубокого обучения, разработанная для повышения эффективности и гибкости. Этот инструмент позволяет смешивать различные варианты программ глубокого обучения, чтобы максимизировать их эффективность и производительность.

Особенности MXNet:

  • Комплексный и гибкий Python API.

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

  • Помимо Python, поддерживает множество языков программирования, включая C++, Java, JavaScript, Go, R, Scala и Perl.

  • Поддержка различных моделей, включая свёрточные нейронные сети (CNNs) и сети долгой краткосрочной памяти (LSTMs).

LightGBM

Специализация: градиентный бустинг
Лицензия: MIT
Документация: сайт

Библиотека LightGBM обеспечивает высокопроизводительную реализацию повышения градиента в DS-проектах, которая может обрабатывать большие наборы данных и многомерные пространства признаков.

Особенности LightGBM:

  • Подходит для широкого круга задач DS, включая обнаружение аномалий, анализ временных рядов, обработку естественного языка и классификацию.

  • LightGBM легко интегрировать с другими библиотеками Python, такими как Pandas, Scikit-Learn и XGBoost.

  • Библиотека спроектирована с опорой на быстроту и эффективность с точки зрения использования памяти, поэтому хорошо подходит для крупномасштабных наборов данных и многомерных пространственных объектов.

  • LightGBM предоставляет широкий набор гиперпараметров, которые можно настраивать для оптимизации производительности модели для конкретных наборов данных и вариантов использования.

Eli5 

Специализация: машинное обучение, визуализация
Лицензия: MIT
Документация: сайт

Библиотека Python для отладки и визуализации моделей машинного обучения. ELI5 предоставляет инструменты, помогающие DS и ML специалистам понять, как работают их модели, и диагностировать потенциальные проблемы.

Особенности ELI5:

  • Предоставляет ряд методов для интерпретации моделей машинного обучения, таких как важность признаков (feature importance), важность перестановки (permutation importance) и значения SHAP (SHapley Additive exPlanations).

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

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

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

Компьютерное зрение 

OpenCV 

Специализация: обработка изображений, сегментация/распознавание
Лицензия: Apache 2.0
Документация: сайт

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

Особенности OpenCV:

  • Кроссплатформенность и поддержка графических процессоров.

  • Оптимизирована для коммерческих приложений CV и ML, работающих в реальном мире и в реальном времени.

  • OpenCV изначально была написана на C++, что дает высокую производительность

  • Использует массивы Numpy для выполнения операций.

  • Расширенное приложение для 3D-объектов.

  • Отсутствие подробной документации и кодов обработки ошибок могут усложнить освоение библиотеки новичками.

YOLOv8 

Специализация: детекция, распознавание объектов
Лицензия: AGPL 3.0
Документация: сайт

YOLOv8 — самый совершенный (на сегодня) и производительный представитель семейства моделей обнаружения объектов YOLO.

Особенности YOLOv8:

  • Предназначен для таких задач CV, как обнаружение объектов, сегментация экземпляров и классификация изображений.

  • Удобный API (командная строка + Python).

  • Быстрее и точнее предыдущих версий.

  • Поддерживает множество форматов экспорта.

  • Модель может работать на обычных и графических процессорах.

  • YOLOv8 обучена на датасете COCO.

PaddleOCR 

Специализация: оптическое распознавание символов, OCR-пайплайн
Лицензия: Apache 2.0
Документация: GitHub

PaddleOCR — многоязычные наборы инструментов OCR на основе DL-фреймворка PaddlePaddle.

Особенности PaddleOCR:

  • Практичная сверхлегкая система OCR.

  • Поддержка распознавания более 80 языков.

  • Большой выбор инструментов аннотирования и синтеза данных.

  • Поддержка обучения и развертывания на серверных, мобильных, встроенных устройствах и IoT

SciKit-Image 

Специализация: обработка изображений
Лицензия: BSD-3-Clause
Документация: сайт

SciKit-Image — коллекция алгоритмов для обработки изображений, основанная на NumPy, scipy.ndimage и ряде других библиотек, обеспечивающая универсальный набор процедур обработки изображений в Python.

Особенности SciKit-Image:

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

  • Доступна для всех и повторно используема в различных контекстах.

  • Создана на основе NumPy, SciPy и matplotlib (NumPy и SciPy должны быть предустановлены).

  • Работает со всеми форматами данных, поддерживаемыми библиотекой изображений Python.

  • Работает с URL-путями изображений.

DeepFace 

Специализация: распознавание лиц
Лицензия: MIT
Документация: GitHub

Deepface — легкий фреймворк для распознавания лиц и анализа атрибутов лица (возраст, пол, эмоции и раса) для Python.

Особенности Deepface:

  • Библиотека опубликована в индексе пакетов Python (PyPI).

  • Гибридная система объединяет самые современные модели: VGG-Face, Google FaceNet, OpenFace, Facebook DeepFace, DeepID, ArcFace, Dlib и SFace.

  • Функции включают анализ атрибутов лиц и анализ лиц в реальном времени.

  • Точность 97,53% в задачах распознавания лиц.

Yellowbrick 

Специализация: машинное обучение, прогнозирование, визуализация
Лицензия: MIT
Документация: сайт

Yellowbrick — набор средств визуального анализа и диагностики, предназначенных для облегчения машинного обучения с помощью scikit-learn. Основной объект API библиотеки Visualizer представляет собой средство оценки scikit-learn, которое учится на данных. «Визуализаторы» изучают данные, создавая визуальное представление рабочего процесса выбора модели.

Особенности Yellowbrick:

  • Поддержка различных моделей, включая визуализацию функций, классификации, кластеризации, регрессии, выбора модели, целей и текста.

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

  • Возможность интерпретации оценки моделей.

  • Активное сообщество разработчиков.

Обработка естественного языка

DeepSpeech 

Специализация: распознавание речи
Лицензия: MPL-2.0
Документация: сайт

DeepSpeech — встроенный механизм преобразования речи в текст с открытым исходным кодом, который может автономно работать в режиме реального времени на устройствах в диапазоне от Raspberry Pi 4 до мощных серверов с графическим процессором.

Особенности DeepSpeech:

  • Библиотека создана на основе TensorFlow и как реализация алгоритма DeepSpeech, разработанного Baidu.

  • Ядро DeepSpeech написано на C++, но имеет привязку к Python, .NET, Java и JavaScript.

  • DeepSpeech можно использовать для двух ключевых действий, связанных с распознаванием речи — обучения и логического вывода.

  • Использует нейронную модель для предсказания текста из речи, а также языковую модель N-грамм, обученную предсказывать текст из предшествующего текста.

Gensim

Специализация: тематическое моделирование без учителя и обработки естественного языка (NLP)
Лицензия: LGPL-2.1
Документация: GitHub.

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

Особенности Gensim:

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

  • Поставляется с алгоритмами обработки текста, такими как Word2Vec, FastText, Latent Semantic Analysis, изучающими статистические закономерности совпадения в документе, чтобы отфильтровать ненужные слова и построить модель только с важными функциями.

  • Предоставляет оболочки ввода-вывода и считыватели, которые могут импортировать и поддерживать широкий спектр форматов данных.

  • Поставляется с простым и интуитивно понятным интерфейсом, который может легко использоваться новичками. Кривая изучения API также довольно низкая, что объясняет, почему многим разработчикам нравится эта библиотека.

SpaCy 

Специализация: обработка естественного языка (NLP) промышленного масштаба
Лицензия: Third Party
Документация: сайт

Библиотека Python с открытым исходным кодом для решения сложных задач NLP. SpaCy написана на Cython с оптимизацией управления памятью для обеспечения улучшенной скорости.

Особенности SpaCy:

  • Более 60 обученных NLP-конвейеров с поддержкой 19 языков.

  • Предварительно обученные вложения слов.

  • Готовые к проду пайплайны.

  • Поддерживает пользовательские модели, написанные на TensorFlow и PyTorch.

  • SpaCy Universe предлагает широкий выбор пакетов Python, плагинов и расширений для NLP.

  • SpaCy API поддерживает многие задачи NLP, такие, как лемматизация, распознавание сущностей, тегирование, распознавание предложений и токенизация.

NLTK 

Специализация: обработка естественного языка (NLP)
Лицензия: Apache-2.0
Документация: сайт

NLTK (Natural Language Toolkit) — один из наиболее популярных инструментов для обработки естественного языка. 

Особенности NLTK:

  • Поддерживает более 50 языковых наборов данных и обученных языковых моделей.

  • Предлагает классификацию текста, выделение корней, токенизацию, тегирование, синтаксический анализ.

  • Функции для анализа настроений или мнения, выраженного во фрагменте текста.

  • Служит оболочкой для NLP-библиотек промышленного масштаба.

  • Поддерживает мультиплатформенность — работает на Windows, Linux и Mac OS X.

TorchAudio 

Специализация: преобразование данных для обработки аудиосигнала
Лицензия: BSD-2-Clause
Документация: сайт

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

Особенности TorchAudio:

  • Мощные N-мерные массивы.

  • Быстрые и универсальные концепции векторизации, индексации и широковещательной рассылки.

  • Инструменты для интеграции кода C/C++ и Fortran.

  • Комплексные математические функции, генераторы случайных чисел, процедуры линейной алгебры, преобразования Фурье.

  • Поддерживает широкий спектр аппаратных и вычислительных платформ и хорошо интегрируется с библиотеками распределенных, графических процессоров и разреженных массивов.

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

MatPlotLib 

Специализация: реализация визуальных данных
Лицензия: BSD-3-Clause

Документация: сайт

Matplotlib — основная опенсорсная библиотека Python, используемая в науке в дата-сайенс для визуализации данных в виде диаграмм и графиков.

Особенности Matplotlib:

  • Предоставляет объектно-ориентированный API, который можно использовать для встраивания графиков в приложения.

  • Двухмерная графическая библиотека Python с ограниченной поддержкой 3D-графики.

  • Может использоваться в качестве замены пакета MATLAB и Mathematica с преимуществом бесплатности и открытого исходного кода.

  • Поддерживает десятки бэкендов и типов вывода, поэтому не зависит от типа ОС и формата данных.

  • Низкое потребление памяти.

  • Не подходит для работы с несколькими наборами данных одновременно.

  • Слабая поддержка временных рядов.

Seaborn 

Специализация: визуализация статических данных
Лицензия: BSD-3-Clause
Документация: сайт

Библиотека визуализации данных Python, основанная на Matplotlib. По сравнению с Matplotlib, Seaborn можно использовать для создания более привлекательных и информативных статистических графиков. Наряду с обширной поддержкой визуализации данных Seaborn также поставляется со встроенным API, ориентированным на набор данных, для изучения взаимосвязей между несколькими переменными.

Особенности Seaborn:

  • Высокоуровневый интерфейс для создания привлекательных и информативных статистических графиков.

  • Параметры для анализа и визуализации одномерных и двумерных точек данных, а также для сравнения данных с другими подмножествами данных.

  • Поддержка автоматизированной статистической оценки и графического представления моделей линейной регрессии для различных типов целевых переменных.

  • Создает сложные визуализации для структурирования сеток из нескольких графиков, предоставляя функции, выполняющие высокоуровневые абстракции.

  • Поставляется с многочисленными встроенными темами для стилизации и создания графиков matplotlib.

  • Хорошо подходит для статистических моделей визуализации — тепловых карт и других типов, которые обобщают данные и отображают общие распределения.

Plotly

Специализация: визуализация данных
Лицензия: MIT
Документация: сайт

Plotly — среда визуализации трехмерных данных Python с открытым исходным кодом, построенная на библиотеке Plotly JavaScript (plotly.js).

Особенности Plotly:

  • Легкий синтаксис — все графики используют одинаковые переменные.

  • Поддерживает точечные диаграммы, гистограммы, линейные диаграммы, ящичные диаграммы, многоосевые графики, спарклайны, дендрограммы, трехмерные графики и другие типы диаграмм.

  • В отличие от других сред визуализации данных, включает контурные графики.

  • Предоставляет трехмерные диаграммы с несколькими интерактивными параметрами.

  • Инструмент наведения Plotly позволяет обнаруживать выбросы или аномалии во многих точках выборки.

  • Plotly можно использовать для веб-визуализации данных, встроенных в блокноты Jupyter, веб-приложения Dash, или экспортированных в виде отдельных HTML-файлов.

  • Графический пользовательский интерфейс позволяет работать с инструментом визуализации даже новичкам.

Bokeh

Специализация: визуализация данных
Лицензия: BSD-3-Clause
Документация: GitHub

Bokeh — одна из самых интерактивных библиотек в Python. С ее помощью можно обрабатывать огромные наборы данных и строить универсальные графики, которые помогают выполнять обширные исследовательские работы в рамках EDA (Exploratory Data Analysis).

Особенности Bokeh:

  • Помогает быстро создавать сложные статистические графики с помощью простых команд.

  • Поддерживает выходные данные в виде HTML, блокнота и сервера.

  • Поддерживает несколько языковых привязок, включая R, Python, lua, Julia.

  • Интеграция с Flask и Django.

  • Обеспечивает поддержку преобразования визуализации, написанной в других библиотеках, таких как matplotlib, seaborn и ggplot.

Altair

Специализация: декларативная визуализация
Лицензия: BSD-3-Clause
Документация: GitHub

Altair — инструмент визуализации статистических данных, который разработан на декларативных языках Vega и Vega-Lite, которые используются для создания, сохранения и обмена интерактивными проектами визуализации данных.

Особенности Altair:

  • Altair может создавать привлекательные визуализации данных в таких видах графиков, как гистограммы, круговые диаграммы, диаграммы рассеивания, диаграммы ошибок, стеблевые диаграммы.

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

  • Автоматически устанавливаемые зависимости включают Python 3.6, NumPy и Pandas.

  • Для визуализации данных можно использовать Jupyter Notebooks или JupyterLab.

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

  • Плохо поддерживает 3D-визуализацию.

Работа с массивами

NumPy

Специализация: обработка данных.
Лицензия: BSD.
Документация: сайт, GitHub.

NumPy (Numerical Python) — основной пакет для работы дата-сайентистов с Python. Это модуль для числовых вычислений, который может обрабатывать огромные объемы данных и выполнять действия с массивами.

Особенности NumPy:

  • Мощные N-мерные массивы.

  • Быстрые и универсальные концепции векторизации, индексации и широковещательной рассылки.

  • Инструменты для интеграции кода C/C++ и Fortran.

  • Комплексные математические функции, генераторы случайных чисел, процедуры линейной алгебры, преобразования Фурье.

  • Поддерживает широкий спектр аппаратных и вычислительных платформ и хорошо интегрируется с библиотеками распределенных, графических процессоров и разреженных массивов.

Theano

Специализация: глубокое обучение, параллельные вычисления, оптимизация
Лицензия: BSD-3 Clause

Документация: GitHub

Theano — библиотека Python с открытым исходным кодом, которую можно использовать для различных операций, таких как определение, оценка и оптимизация сложных математических выражений, включая многомерные массивы.

Особенности Theano:

  • Theano достигает высокой эффективности за счет манипулирования и оптимизации распределенного использования ресурсов ЦП и ГП.

  • Предоставляет функцию автоматической дифференциации, упрощая вычисление градиентов и оптимизацию параметров при обучении ML-моделей.

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

  • Библиотека отлично подходит для модульного тестирования.

Xarray

Специализация: работа с многомерными размеченными массивами
Лицензия: Apache-2.0
Документация: сайт

Xarray расширяет возможности массивов NumPy, обеспечивая множество оптимизированных операций с данными.

Особенности Xarray:

  • Xarray, как и NumPy, задает метки (размеры, координаты и атрибуты) поверх необработанных массивов, чтобы использовать их для создания эффективного и лаконичного интерфейса.

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

  • Xarray похож на Pandas, но ориентирован не на табличные данные, а на N-мерные массивы данных.

  • Интерфейс Xarray во многом основан на модели данных netCDF, но выходит за ее рамки, предоставляя функциональные возможности, аналогичные Common Data Model (CDM) netCDF-java.

  • Тесная интеграция с Dask для параллельных вычислений.

Dask

Специализация: параллельные вычисления на Python
Лицензия: BSD-3-Clause
Документация: сайт

Библиотека с открытым исходным кодом для параллельных вычислений Dask способна масштабировать код Python с многоядерных локальных компьютеров на большие распределенные кластеры в облаке.

Особенности Dask:

  • Dask предоставляет параллельные вычисления с графами задач.

  • Библиотека поддерживает фрейм данных Pandas и массивы Numpy.

  • Легкое масштабирование один раз написанного кода до уровня промышленного кластера.

  • Библиотека состоит из 2 основных частей — коллекции больших данных (высоко- и низкоуровневых) и динамического планировщика задач.

  • Пользовательский интерфейс поддерживает API-интерфейсы других библиотек в экосистеме PyData, включая Pandas, scikit-learn и NumPy. Он предоставляет низкоуровневые API-интерфейсы, которые помогают программистам параллельно запускать пользовательские алгоритмы.

  • Развитое сообщество разработчиков.

Парсинг

Scrapy 

Специализация: веб-краулинг, интеллектуальный анализ данных, автоматизированное тестирование.
Лицензия: BSD-3-Clause
Документация: GitHub

Одна из самых популярных и быстрых платформ веб-сканирования с открытым исходным кодом, написанная на Python. Scrapy обычно используется для извлечения данных с веб-страницы с помощью селекторов на основе XPath.

Особенности Scrapy:

  • Кроссплатформенность — работает в Linux, Windows, BSD и Mac OS X.

  • Встроенная функциональность для сбора и извлечения данных из источников HTML/XML.

  • Поддержка создания экспорта фидов в различных форматах (JSON, CSV, XML) и их хранения в нескольких бэкендах.

  • Библиотека использует принцип «Don't Repeat Yourself» («Не повторяйся») в дизайне своего интерфейса, побуждая пользователей писать универсальный код, который можно повторно использовать для создания и масштабирования больших веб-сканеров.

  • Используется для сбора данных из API.

  • Scrapy — асинхронная библиотека, крайне эффективная с точки зрения скорости.

  • Не поддерживает веб-сайты на основе Javascript.

BeautifulSoup 

Специализация: парсинг и очистка данных.
Лицензия: MIT
Документация: сайт

Библиотека очистки и анализа данных Python, работающая с исходниками в HTML и XML. BeautifulSoup позволяет разрабатывать поисковых роботов, сканирующих веб-сайты.

Особенности BeautifulSoup:

  • Beautiful Soup построен на основе известных парсеров Python, таких как lxml и html5lib, что позволяет нам взаимодействовать с различными алгоритмами синтаксического анализа.

  • Предоставляет несколько простых методов и «pythonic» идиом для просмотра, поиска и управления деревом синтаксического анализа.

  • Упорядочивает собранные веб-данные в простые для понимания XML-структуры, что позволяет проводить их анализ данных. 

  • Автоматически определяет кодировку и плавно интерпретирует HTML-документы в нужный формат (входящие — в Unicode, а исходящие — в UTF-8), в том числе содержащие специальные символы. 

  • Поставляется с обширной документацией.

  • Большое и активное сообщество поддержки.

  • Работает с многопоточностью только через сторонние кодеры.

Matminer

Специализация: интеллектуальный анализ свойств материалов
Лицензия: BSD
Документация: GitHub

Matminer — это библиотека Python для анализа данных о свойствах материалов.

Особенности Matminer:

  • Быстрый доступ к 40+ готовым датасетам (matminer.datasets).

  • Охватывает различные домены данных о материалах.

  • Легко создавать свои собственные наборы данных из онлайн-репозиториев (matminer.data_retrieval).

  • Преобразование и описание атрибутов сложных материалов в числовые дескрипторы (matminer.featurizers).

  • 70+ характеристик, адаптированных из научных публикаций.

  • Matminer сам по себе не содержит инструментов машинного обучения, но работает с форматом данных Pandas, делающим ML-библиотеки доступными для материаловедческих приложений.

Прогнозирование

Statsmodels

Специализация: обработка статистических данных
Лицензия: BSD-3-Clause
Документация: GitHub

Statsmodels — модуль Python, который предоставляет классы и функции для оценки множества различных статистических моделей, а также для проведения статистических тестов и исследования статистических данных.

Особенности Statsmodels:

  • Для каждого оценщика доступен обширный список статистики результатов.

  • Результаты проверяются на соответствие существующим статистическим пакетам, чтобы убедиться в их правильности.

  • Поддерживает указание моделей с использованием формул R-стиля и фреймов данных Pandas, а также массивы Numpy.

Prophet

Специализация: прогнозирование временных рядов
Лицензия: MIT
Документация: GitHub

Prophet — инструмент для создания высококачественных прогнозов для данных временных рядов, которые имеют множественную сезонность с линейным или нелинейным ростом.

Особенности Prophet:

  • Библиотека следует API модели Sklearn.

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

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

  • Prophet устойчива к отсутствующим данным и сдвигам в тренде и обычно хорошо справляется с выбросами.

Ramp

Специализация: построение предиктивных моделей, прототипирование
Лицензия: European Union Public License 1.2
Документация: сайт

Ramp (Rapid Machine Learning Prototyping) — фреймворк Python для предсказательной аналитики, который можно с успехом использовать для быстрого прототипирования машинного обучения. Это унифицированная платформа на основе Pandas для работы с существующими библиотеками машинного обучения и статистики Python (scikit-learn, rpy2 и т. д.).

Особенности Ramp:

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

  • Ramp поддерживает несколько форматов ввода данных, включая базы данных CSV, Excel и SQL, что упрощает работу с различными типами данных.

  • Быстрое кэширование и сохранение всех промежуточных и конечных вычислений.

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

  • Растущая библиотека преобразований признаков, метрик и оценок. 

  • Среда для совместной работы специалистов.

NuPIC

Специализация: выделение паттернов из данных в режиме реального времени
Лицензия: GNU Affero General Public License
Документация: GitHub

NuPIC (Numenta Platform for Intelligent Computing) — библиотека Python с открытым исходным кодом, служащая реализацией теории иерархической временной памяти или HTM (Hierarchical Temporal Memory). Она предназначена для создания интеллектуальных систем, имитирующих поведение неокортекса — части мозга, отвечающей за сенсорное восприятие, пространственное мышление и язык.

Особенности NuPIC:

  • NuPIC реализует биологически вдохновленный алгоритм HTM для изучения временных закономерностей в потоке данных и создания прогнозов на их основе.

  • Библиотека подходит для таких задач, как обнаружение аномалий, прогнозирование, снижение размерности и классификация образов.

  • Гибкий и расширяемый сетевой API, который можно использовать для создания пользовательских сетей HTM для конкретных приложений.

Математический анализ

SymPy

Специализация: символьные вычисления
Лицензия: BSD
Документация: сайт

Библиотека Python для символьной математики. SymPy является полнофункциональной системой компьютерной алгебры (CAS) с максимально простым кодом, делающим инструмент понятным и легко расширяемым.

Особенности SymPy:

  • SymPy зависит только от mpmath, чистой библиотеки Python для произвольной арифметики с плавающей запятой, что делает ее простой в использовании.

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

  • Помимо использования в качестве интерактивного инструмента, SymPy можно встраивать в другие приложения и расширять с помощью пользовательских функций.

SageMath

Специализация: математические вычисления
Лицензия: GPL
Документация: сайт

SageMath — достойная опенсорсная альтернатива таким вычислительным системам, как Magma, Maple, Mathematica и Matlab.

Особенности SageMath:

  • Библиотека включает более 100 пакетов с открытым исходным кодом, таких как NumPy, SciPy, matplotlib, Sympy, Maxima, GAP, FLINT, R.

  • Унифицированный интерфейс.

  • SageMath можно использовать для изучения элементарной и продвинутой, чистой и прикладной математики.

  • Пользовательский интерфейс представляет собой блокнот в веб-браузере или командную строку.

Квантовые вычисления

QuTiP

Специализация: моделирование квантовой динамики
Лицензия: BSD-3-Clause
Документация: сайт

QuTiP — программное обеспечение с открытым исходным кодом для моделирования динамики открытых квантовых систем.

Особенности QuTiP:

  • Библиотека зависит от числовых пакетов Numpy, Scipy и Cython.

  • Графический вывод обеспечивает Matplotlib.

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

  • Свободно распространяемое ПО идеально подходит для изучения квантовой механики и динамики в учебных заведениях.

PyQuil

Специализация: квантовое программирование с использованием Quil
Лицензия: Apache-2.0
Документация: сайт

Как компонент Rigetti Forest SDK, PyQuil позволяет создавать и выполнять программы на языке квантовых инструкций Quil (Quantum Instruction Language) с использованием Python.

Особенности PyQuil:

  • PyQuil требует установки других компонентов Forest SDK, а именно компилятора Quil (quilc) и виртуальной машины Quantum (QVM), используемых для моделирования квантовых компьютеров.

Библиотеку также можно использовать для запуска программ на реальных квантовых компьютерах с помощью Quantum Cloud Services (QCS).


НЛО прилетело и оставило здесь промокод для читателей нашего блога:
-15% на заказ любого VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.

Источник: https://habr.com/ru/companies/first/articles/745680/


Интересные статьи

Интересные статьи

Его отец - однорукий русский анархист, а мать - немецкая левая писательница. Их сын станет непревзойденным гением абстрактной математики, но добровольно уйдет в изгнание в возрасте 42 лет. Как, зачем ...
Расскажу о проделанном пути, чтобы найти идеальный, для моих целей, инструмент конфигурирования проекта и о создании легковесной библиотеки bestconfig, впитавшей в себя преимущества изложенных подходо...
Адаптация - это маленькая жизнь, в ней есть все: оценка по компетенциям, оценка эффективности, планирование, мотивация, обучение, развитие… Это полный цикл HR-процессов,...
Вопрос о жизни во Вселенной — один из самых неясных во всей науке. Мы знаем, что на Земле есть жизнь, что все живые организмы на Земле произошли от одного общего предка, ...
Статья, первая часть которой здесь представлена, содержит различные соображения автора, накопившиеся в ходе длительной разработки специализированной системы поиска социальных связей, базирующейся...