«Удовольствие от программирования на 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 (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).


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

Комментарии (0)