Data Science активно использует предиктивные возможности алгоритмов машинного обучения (ML). Python же предоставляет удобную среду для экспериментов с этими алгоритмами благодаря своей читабельности и эффективности. А обилие библиотек делают его еще более привлекательным решением.
Фреймворк — это интерфейс или инструмент, позволяющий разработчикам просто создавать модели машинного обучения, не погружаясь в лежащие в основе алгоритмы.
Библиотека — это набор файлов, содержащих код, который можно импортировать в свое приложение.
Фреймворк может быть набором библиотек, необходимых для построения модели без понимания особенностей лежащих в основе алгоритмов. Однако разработчикам нужно знать, каким образом эти алгоритмы работают, чтобы корректно интерпретировать результат.
#10 Matplotlib
Matplotlib — это интерактивная кроссплатформенная библиотека для создания двумерных диаграмм. С ее помощью можно создавать качественные графики и диаграммы в нескольких форматах.
Преимущества:
- Гибкость. Поддерживает Python и IPython, скрипты Python, Jupyter Notebook, сервера веб-приложений и многие инструменты с интерфейсом (GTK+, Tkinter, Qt и wxPython).
- Предоставляет интерфейс в стиле MATLAB для создания диаграмм
- Объектно-ориентированный интерфейс предоставляет полный контроль над свойствами осей, шрифтов, стилями линий и так далее.
- Совместим с разными графическими движками и операционными системами.
- Часто используется в других библиотеках, таких как Pandas.
Недостатки:
- Наличие двух разных интерфейсов (объектно-ориентированного и в стиле MATLAB) может запутать начинающего разработчика.
- Matplotlib — это библиотека для визуализации, а не для анализа данных. Для последнего ее нужно совмещать с другими, например, Pandas.
Официальная документация: https://matplotlib.org/stable/index.html.
Уроки по matplotlib на русском: Установка matplotlib и архитектура графиков / plt 1.
#9 Natural Language Toolkit (NLTK)
NLTK — это фреймворк и набор библиотек для разработки системы символической и статистической обработки естественного языка (natural language processing, NLP). Стандартный инструмент для NLP в Python.
Преимущества:
- Библиотека содержит графические инструменты, а также примеры данных.
- Включает книгу и набор примеров для начинающих.
- Предоставляет поддержку разных ML-операций, таких как классификация, парсинг, токенизация и так далее.
- Работает как платформа для прототипирования и создания исследовательских систем.
- Совместима с несколькими языками.
Недостатки:
- Для работы с NLTK нужно понимать, как работать со строками. Однако в этом может помочь документация.
- Токенизация происходит за счет разбития текста на предложения. Это отрицательно влияет на производительность.
Официальная документация: https://www.nltk.org/.
#8 Pandas
Это библиотека Python для высокопроизводительных и одновременно понятных структур данных и инструментов анализа данных в Python.
Преимущества:
- Выразительные, быстрые и гибкие структуры данных.
- Поддерживает операции агрегации, конкатенации, итерации, переиндексации и визуализации.
- Гибкая и совместимая с другими библиотеками Python.
- Интуитивное управление данными с минимальным набором команд.
- Поддерживает широкий спектр коммерческих и академических областей.
- Производительная.
Недостатки:
- Построена на основе matplotlib, что значит, что начинающий должен быть знаком с обеими, чтобы понимать, что лучше использовать для решения конкретной проблемы.
- Меньше подходит для n-размерных массивов и статистического моделирования. Для этого лучше использовать NumPy, SciPy или SciKit Learn.
Официальная документация: https://pandas.pydata.org/pandas-docs/stable/index.html.
Краткая документация с примерами: Введение в библиотеку pandas: установка и первые шаги / pd 1.
Уроки по Pandas на русском: Основы Pandas №1 // Чтение файлов, DataFrame, отбор данных.
#7 Scikit-Learn
Эта библиотека построена на основе matplotlib, NumPy и SciPy. Она предоставляет несколько инструментов для анализа и добычи данных.
Преимущества:
- Простая и эффективная.
- Быстро улучшается и обновляется.
- Разнообразие алгоритмов, включая кластерный и факторный анализ, а также метод главных компонент.
- Может извлекать данные из изображений и текста.
- Может использоваться для NLP.
Недостатки:
- Предназначена для обучения с учителем и не очень хорошо работает в обучении без учителя (например, в Deep Learning).
Официальная документация: https://scikit-learn.org/stable/.
#6 Seaborn
Библиотека для создания статистических графиков в Python. Построена на базе matplotlib и имеет интеграцию со структурами данных pandas.
Преимущества
- Предлагает более визуально привлекательные графики по сравнению с matplotlib.
- Предлагает встроенные графики, которых нет в matplotlib.
- Использует меньше кода для визуализации.
- Отличная интеграция с Pandas: комбинация из визуализации данных и анализа.
Недостатки:
- Построена на основе matplotlib, поэтому нужно понимать, какую из библиотек использовать в том или ином случае.
- Полагается на темы по умолчанию, поэтому результат не настолько настраиваемый, как у matplotlib.
Официальная документация: https://seaborn.pydata.org/.
#5 NumPy
NumPy добавляет обработку многомерных массивов и матриц в Python, а также крупные наборов данных для высокоуровневых математических функций. Обычно используется для научных вычислений. Следовательно, это один из самых используемых пакетов Python для машинного обучения.
Преимущества:
- Интуитивная и интерактивная.
- Предлагает преобразования Фурье, возможности для генерации сложных чисел и другие инструменты для интеграции таких компьютерных языков, как C/C++ и Fortran.
- Универсальность — другие библиотеки для машинного обучения, такие как scikit-learn и TensorFlow, используют массивы NumPy в качестве исходных значений; а у Pandas — NumPy под капотом.
- Серьезный вклад сообщества в развитие.
- Упрощает сложные математические реализации.
Недостатки:
- Может быть чересчур сложным — не стоит использовать, если вам с головой хватает обычных списков Python.
Официальная документация: https://numpy.org/.
Уроки по NumPy на русском: Введение и установка библиотеки NumPy / np 1.
#4 Keras
Очень популярная библиотека для машинного обучения в Python, предоставляющая высокоуровневое API нейронной сети, работающее поверх TensorFlow, CNTK или Theano.
Преимущества:
- Отличное решение для экспериментов и быстрого прототипирования.
- Портативная.
- Предлагает легкое представление нейронных сетей.
- Удобно использовать для моделирования и визуализации.
Недостатки:
- Медленная, поскольку требует создания вычислительного графа перед выполнением операций.
Официальная документация: https://keras.io/.
Уроки по Keras на русском: Преимущества и ограничения Keras / keras 1.
#3 SciPy
Популярная библиотека с разными модулями для оптимизации, линейной алгебры, интеграции и статистики.
Преимущества:
- Подходит для управления изображениями.
- Предоставляет простую обработку математических операций.
- Предлагает эффективные математические операции, включая интеграцию и оптимизацию.
- Поддерживает сигнальную обработку.
Недостатки:
- Под названием SciPy скрываются как стек, так и библиотека. При этом библиотека является частью стека. Это может сбивать с толку.
Официальная документация: https://www.scipy.org/.
Введение в SciPy на русском: Руководство по SciPy: что это, и как ее использовать.
#2 Pytorch
Популярная библиотека, построенная на базе Torch, которая, в свою очередь, сделана на C и завернута в Lua. Изначально создавалась Facebook, но сейчас используется в Twitter, Salefsorce и многих других организациях.
Преимущества:
- Содержит инструменты и библиотеки компьютерного зрения, натуральной обработки речи, глубокого обучения и другого.
- Разработчики могут выполнять вычисления на тензорах с помощью ускорения GPU.
- Помогает создавать вычислительные диаграммы.
- Процесс моделирования простой и прозрачный.
- Стандартный режим «define-by-run» больше напоминает классическое программирование.
- Использует привычные инструменты отладки, такие как pdb, ipdb или отладчик PyCharm.
- Использует массу готовых моделей и модулей, которые можно комбинировать между собой.
Недостатки:
- Поскольку PyTorch относительно новый, не так много онлайн-ресурсов. Это усложняет процесс обучения с нуля, хотя он все равно достаточно интуитивный.
- Не настолько готов к полноценной работе в сравнении с TensorFlow.
Официальная документация: https://pytorch.org/.
#1 TensorFlow
Изначально разработанная Google, TensorFlow — это высокопроизводительная библиотека для вычислений с помощью графа потока данных.
Под капотом это в большей степени фреймворк для создания и работы вычислений, использующих тензоры. Чаще всего TensorFlow используется в нейронных сетях и глубоком обучении. Это делает библиотеку одной из самых популярных.
Преимущества:
- Поддерживает обучение с подкреплением и другие алгоритмы.
- Предоставляет абстракцию вычислительного графа.
- Огромное сообщество.
- Предоставляет TensorBoard — инструмент для визуализации моделей прямо в браузере.
- Готов к работе.
- Может быть развернут на нескольких CPU и GPU.
Недостатки:
- Намного медленнее остальных фреймворков, использующих CPU/GPU.
- Крутая кривая обучения по сравнению с PyTorch.
- Вычислительные графы могут быть медленными.
- Не поддерживается коммерчески.
- Не слишком большой набор инструментов.
Официальная документация: https://www.tensorflow.org/.
Выводы
Теперь вы знаете разницу в библиотеках и фреймворках Python. Можете оценить преимущества и недостатки самых популярных библиотек машинного обучения.