July 11, 2023

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

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

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 (Hierarchical Temporal Memory) для изучения временных закономерностей в потоке данных и создания прогнозов на их основе.
  • Библиотека подходит для таких задач, как обнаружение аномалий, прогнозирование, снижение размерности и классификация образов.
  • Гибкий и расширяемый сетевой 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).