Собрали самые популярные и полезные библиотеки машинного обучения для Python. Можно ставить на свой домашний компьютер, загружать данные и становиться повелителем биг-даты и нейросетей.
Что такое машинное обучение
Машинное обучение (Machine Learning, ML) — направление в области искусственного интеллекта, которое занимается разработкой алгоритмов, способных обучаться и делать предсказания на основе данных. Смысл машинного обучения состоит в том, чтобы создаваемые системы самостоятельно адаптировались, изменялись и улучшали свою производительность с течением времени в ответ на накопление данных и опыта.
Если проще, это наука о том, как заставить машины лучше выполнять задачи, используя предыдущий опыт (обучающие данные). Типичный пример работы машинного обучения — рекомендательные системы на маркетплейсах, которые предлагают нам подходящие товары на основе анализа посетителей с похожими предпочтениями и историей покупок.
Машинное обучение включает множество различных методов: нейронные сети, случайные леса, метод опорных векторов и многие другие, каждый из которых подходит для решения определённых задач.
TensorFlow и Keras
TensorFlow — бэкенд-библиотека для разработки, обучения и развёртывания моделей глубокого обучения. Поначалу у неё были избыточные API-интерфейсы, которые затрудняли построение и реализацию моделей. Со временем разработчики устранили проблемы с API при помощи обновлений, а интерфейсом по умолчанию сделали Keras, так что мы будем рассматривать их вместе.
За счёт гибкости и масштабируемости TensorFlow подходит для различных приложений глубокого обучения, включая обработку естественного языка, компьютерное зрение и обучение с подкреплением. Также библиотека предоставляет инструменты для распределённого обучения на нескольких графических процессорах или даже на нескольких машинах.
Особенности TensorFlow:
- Множество пакетов для построения моделей глубокого обучения и их масштабирования для коммерческого развёртывания.
- Пользователи могут обращаться к сотням предварительно обученных моделей в TensorFlow Hub и Model Garden. Hub содержит модели Plug-and-Play, а Model Garden предназначен для более опытных пользователей.
- Позволяет параллельно обучать несколько нейросетей.
- Может работать на самых разных аппаратных системах, включая процессоры, графические процессоры, TPU и другие.
- TensorFlow Lite оптимизирован для мобильных и встроенных моделей машинного обучения.
- Пользователи могут загружать свои эксперименты по машинному обучению на Tensorboard.dev и там делиться ими.
Keras — библиотека высокого уровня, которая работает поверх TensorFlow и других бэкендов, таких как Theano или Microsoft Cognitive Toolkit. Удобный интерфейс Keras позволяет разрабатывать и обучать модели глубокого обучения без ущерба для производительности. Именно поэтому, кстати, её часто выбирают многие новички как первую библиотеку для таких задач.
С помощью Keras можно создавать различные типы нейронных сетей. Предварительно обученные модели там тоже есть, можно пользоваться.
Особенности Keras:
- Решает задачи высокого уровня по построению нейронных сетей в TensorFlow и поэтому содержит фундаментальные модули (функции активации, слои, оптимизаторы и многое другое).
- Поддерживает стандартные, свёрточные и рекуррентные нейронные сети, а также служебные уровни с нормализацией, исключением и объединением в пулы.
- Предназначена для упрощения кодирования глубоких нейронных сетей.
Scikit-learn
Scikit-learn — одна из самых популярных библиотек машинного обучения в Python, потому что она предоставляет полный набор инструментов для предварительной обработки данных, выбора функций, обучения и оценки моделей. Есть поддержка линейной регрессии, дерева решений и опорных векторов.
С помощью Scikit-learn можно разделять данные, делать перекрёстную проверку, настраивать гиперпараметры и оценивать модели. У этой библиотеки понятный API, который подходит новичкам.
Особенности Scikit-learn:
- Включает все основные алгоритмы машинного обучения, в том числе векторные машины, случайные леса, повышение градиента, кластеризацию k-средних и DBSCAN.
- Может из коробки работать с NumPy и SciPy для очистки, подготовки и вычислений данных.
- Есть модули для загрузки данных, а также для разделения их на обучающие и тестовые наборы.
- Поддерживает извлечение признаков для текстовых и графических данных.
NumPy
NumPy — одна из универсальных библиотек для работы с массивами или большими коллекциями однородных данных. С её помощью можно сэкономить много времени при выполнении сложных операций над матрицами и многомерными массивами: алгебраических, логических и статистических. Другие библиотеки, например TensorFlow, используют NumPy для управления тензорами.
Особенности NumPy:
- Поддерживает n-мерные массивы для выполнения операций векторизации, индексации и вещания.
- Поддерживает математические функции преобразований Фурье, методы линейной алгебры и генераторы случайных чисел.
- Может быть реализован на различных вычислительных платформах, включая распределённые вычисления и вычисления на GPU.
- Есть модули для построения графиков и числовых массивов.
- Позволяет выполнять численные операции другим библиотекам, связанным с наукой о данных, визуализацией данных, обработкой изображений, квантовыми вычислениями, обработкой сигналов, географической обработкой, биоинформатикой и других.
Pandas
Pandas — пакет, основанный на NumPy (поэтому для работы должны быть установлены оба пакета), но расширяющий его для одновременной работы с разными типами размеченных данных. Например, Pandas можно использовать, чтобы проанализировать файл CSV c числовыми, алфавитными и строковыми данными. Это лучший вариант для обработки табличных данных и временных рядов, потому что избавляет от необходимости писать код специально для разных математических операций. Помимо управления данными, Pandas поддерживают преобразование и визуализацию.
Особенности Pandas:
- Поддерживает разных структур данных, которая позволяет выполнять различные аналитические операции.
- Есть много модулей для управления данными, включая изменение формы, объединение, слияние и поворот.
- Есть возможность визуализации данных.
- Есть возможность выполнять математические операции, включая вычисления и статистику, не обращаясь к внешним библиотекам.
PyTorch
PyTorch — библиотека общего назначения для машинного обучения. Она позволяет определять и изменять нейронную сеть на лету, так что это отличный инструмент для быстрого прототипирования и экспериментов. Функция автоматического дифференцирования эффективно рассчитывает градиенты, упрощая процесс обучения сложных моделей. А ещё там есть много дополнительных инструментов, например torchvision для задач компьютерного зрения и torchaudio для обработки звука.
Особенности PyTorch:
- Есть библиотеки для предварительно обученных моделей. PyTorch Hub предназначен для пользователей, которые хотят поэкспериментировать с дизайном моделей, а Ecosystem Tools содержит предварительно обученные модели.
- Поддерживает прототипирование, что позволяет быстро экспериментировать с различными идеями.
- Эффективно использует память и позволяет обучать несколько моделей параллельно.
- Поддерживает различные типы оборудования.
- Можно работать в графическом режиме.
- TorchServe упрощает развёртывание моделей в любом масштабе, независимо от среды.
SciPy
SciPy — библиотека для научных вычислений, которая содержит пакеты и модули для линейной алгебры, оптимизации изображений, интеграционной интерполяции, обработки сигналов и изображений, решения обыкновенных дифференциальных уравнений и других вычислительных задач.
Особенности SciPy:
- Полный набор математических методов исчисления, линейной алгебры, статистики, вероятностей и так далее.
- Есть пакеты для обработки изображений и обработки сигналов.
- Функция Weave позволяет пользователям писать код на C/C++ внутри Python.
- Сообщество остаётся активным и постоянно обновляет и добавляет новые функции.
Что дальше
В следующий раз посмотрим, какие есть библиотеки для машинного обучения в JavaScript. Подпишитесь, чтобы не пропустить :-)