Составили список самых важных библиотек Python для машинного обучения и рассказали, для каких задач они могут быть полезны начинающим ML-инженерам и специалистам по Data Science. Собрать подборку помог Кирилл Симонов — ML-разработчик компании IRLIX с экспертизой в компьютерном зрении.

NumPy

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

NumPy предоставляет множество функций для работы с числовыми данными как с N-мерными матрицами. Этот формат удобнее и быстрее в работе, чем встроенные в Python структуры данных вроде списков и кортежей. Поэтому использование матриц повышает производительность вычислений.

Как используется в ML

Для удобства работы табличные данные, тексты, картинки и звуки представляются в числовом виде. Если точнее, в виде специальных структур: матриц, векторов, тензоров. NumPy нужен, чтобы работать с этими структурами: видоизменять, преобразовывать, выполнять сложные математические операции. 

Чаще всего NumPy применяют вместе с другими библиотеками, например TensorFlow, PyTorch, Pandas. Также она лежит в основе других инструментов для ML. В проектах NumPy часто используется как связующее звено между разными этапами обработки данных.

Пример решения задачи

Простой пример работы с NumPy — математические операции над двумерными матрицами. Код ниже рассчитывает скалярное произведение двух матриц. Это одна из базовых операций, которые используются в ML и построении нейросетей.

Операция dot в NumPy автоматически рассчитывает скалярное произведение двух матриц. Источник
Операция dot в NumPy автоматически рассчитывает скалярное произведение двух матриц. Источник

Pandas

Pandas — скорее библиотека для анализа данных, но ее часто используют для предварительной обработки информации перед загрузкой в ML-модель. С помощью Pandas можно выполнять разные операции с данными: считывать их, фильтровать и приводить к единому виду, собирать в единообразные структуры и готовить к загрузке в модель.

Как используется в ML

Pandas применяют для предварительной подготовки и обработки информации. Библиотека позволяет:

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

  • индексировать данные, соотносить и объединять их между собой;

  • изучать, очищать и преобразовывать информацию для загрузки в модель;

  • манипулировать сложными структурами данных, используя несколько строк кода;

  • работать с временными рядами и т.д.

Пример решения задачи

Загрузка и обработка данных с помощью библиотеки — относительно простая и удобная. В коде ниже Pandas помогает импортировать данные из CSV-таблицы, а затем отфильтровать и вывести информацию только о сотрудниках с зарплатой выше 50 000.

Понадобится всего две команды Pandas: для загрузки из CSV и для фильтрации данных. Источник
Понадобится всего две команды Pandas: для загрузки из CSV и для фильтрации данных. Источник

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

Создание таблицы с данными Pandas из списка словарей в Python. Источник
Создание таблицы с данными Pandas из списка словарей в Python. Источник

Scikit-learn

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

Как используется в ML

В крупных проектах Scikit-learn не используют из-за сложностей с оптимизацией вычислений на больших данных. Но ее применяют для быстрой проверки гипотез о данных или способах решения задачи — в библиотеке собрано огромное количество ML-алгоритмов, и протестировать идею можно в несколько строчек.

Еще библиотеку часто рекомендуют новичкам для обучения — ее довольно просто использовать, у нее понятная и подробная документация. Это хороший вариант для тех, кто хочет быстро вникнуть в теоретическую базу ML и попрактиковаться.

Пример решения задачи

В Scikit-learn много готовых функций для основных алгоритмов ML. Например, построить модель линейной регрессии, загрузить в нее данные и протестировать гипотезу с помощью библиотеки можно в три строчки кода. Для каждого из этих действий уже есть своя команда.

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

XGBoost / LightGBM / CatBoost

Мы объединили три библиотеки машинного обучения в один пункт, потому что они решают одинаковые задачи с помощью одного и того же инструмента — градиентного бустинга. Это техника машинного обучения, при которой результат достигается с помощью структуры из последовательно выстроенных ML-моделей. Для этого процесса нужно много ресурсов, поэтому важно, чтобы алгоритмы работали быстро и эффективно.

Три библиотеки реализуют градиентный бустинг немного по-разному. У каждой свои особенности:

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

  • LightGBM известен своей высокой скоростью работы и особенностью построения ML-алгоритмов деревьев решений, которые лежат в основе бустинга. Для некоторых задач он дает более точные результаты на больших объемах данных;

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

Как используются в ML

До развития нейросетевых технологий эти библиотеки считались State-of-the-art, то есть лучшими инструментами в своей сфере (классификации и регрессии). Сейчас их продолжают применять в продакшне — коммерческой разработке, — где они до сих пор успешно конкурируют с нейросетями.

Пример решения задачи

Так выглядит простейшая модель для решения задачи классификации, созданная с помощью XGBoost. В этом примере используется стандартный набор тестовых данных Pima Indians Dataset — он содержит информацию о разных группах пациентов и о риске диабета у них. Модель будет определять, с какой вероятностью новое значение относится к тому или иному классу — болен человек диабетом или нет.

Это реализация модели XGBClassifier из XGBoost. Чтобы подготовить под нее данные, в коде используются NumPy и Scikit-learn. Источник
Это реализация модели XGBClassifier из XGBoost. Чтобы подготовить под нее данные, в коде используются NumPy и Scikit-learn. Источник

PyTorch

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

Как используется в ML

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

Пример решения задачи

С помощью PyTorch можно легко создавать простые модели нейронных сетей. Например, код ниже описывает нейросеть из двух линейных слоев с функцией активации для каждого слоя. Эта сеть классифицирует входные данные — относит или к одной, или к другой категории.

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

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

Эта сеть тоже состоит из двух слоев с сигмоидной функцией активации. Источник
Эта сеть тоже состоит из двух слоев с сигмоидной функцией активации. Источник

TensorFlow

Это одна из самых известных библиотек для нейросетей на Python. Она представляет данные как многомерные массивы, а операции с ними — как графы, которые строятся перед запуском программы. В TensorFlow реализовано множество методов для создания, развертывания, обучения и запуска нейросетей и ML-моделей.

Как используется в ML

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

Кроме того, библиотека TensorFlow адаптирована под разные типы вычислительных платформ, включая мобильные, поэтому ее используют в кросс-платформенной разработке ML-решений.

Библиотеку часто сравнивают с PyTorch. При этом некоторые специалисты считают, что последняя лучше подходит для решения академических задач, а TensorFlow — для продакшна. Впрочем, и ту, и другую библиотеку используют в обеих отраслях. Считается, что PyTorch чуть проще в освоении, чем TensorFlow, но эксперты обычно советуют попробовать обе библиотеки и выбрать ту, которая понравится больше. 

Пример решения задачи

TensorFlow ценят за высокий уровень абстракции: можно написать одну понятную команду, а не расписывать технические аспекты реализации. Благодаря этому ML-инженер может сосредоточиться на логике работы модели, а не на мелких деталях. Например, код ниже создает нейросеть, которая распознает изображения из набора данных MNIST — классического датасета с образцами написания рукописных цифр.

Достаточно описать каждый слой сети и задать для него функцию активации, не нужно прописывать все детали с нуля. Источник
Достаточно описать каждый слой сети и задать для него функцию активации, не нужно прописывать все детали с нуля. Источник

Затем остается только скомпилировать и обучить модель на подготовленных данных. Это тоже можно сделать парой команд, просто подставить нужные параметры. Нужно указать количество эпох, то есть полных прохождений датасета через модель, а также размер батча — «групп», на которые делится набор данных.

В этом примере датасет разбивают на группы по 128 элементов и пропускают через нейросеть 15 раз. В зависимости от задачи значения могут быть другими. Источник
В этом примере датасет разбивают на группы по 128 элементов и пропускают через нейросеть 15 раз. В зависимости от задачи значения могут быть другими. Источник

NLTK

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

Как используется в ML

NLTK применяют для быстрой и гибкой работы с текстом: при обработке естественного языка, в компьютерной лингвистике и смежных сферах. 

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

Пример решения задачи

С помощью NLTK можно в несколько строчек удалить из текста стоп-слова. Код ниже загружает список стоп-слов для русского языка, затем разбивает введенный текст на слова и отфильтровывает — удаляет слова, которые есть в стоп-списке.

Чтобы разбить текст на слова, понадобится всего одна команда. Еще одной командой можно получить стоп-слова для русского языка. Затем с помощью цикла фильтруются слова из заданного текста. Источник
Чтобы разбить текст на слова, понадобится всего одна команда. Еще одной командой можно получить стоп-слова для русского языка. Затем с помощью цикла фильтруются слова из заданного текста. Источник

OpenCV

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

Как используется в ML

OpenCV применяют в компьютерном зрении — эта библиотека подходит для всех направлений этой сферы. Например, ее можно использовать для обработки фото и видео, создания систем распознавания лиц и сегментации сосудов на медицинских сканированиях. Также библиотека лежит в основе многих алгоритмов для робототехники — ее возможности помогают роботам «видеть» окружающий мир.

С помощью OpenCV можно преобразовывать изображения, фильтровать их элементы и отсекать ненужное, обнаруживать и извлекать объекты с заданными свойствами. Кроме работы с классическими «плоскими» двумерными изображениями, есть отдельный набор функций для калибровки камеры и работы с 3D-объектами.

Пример решения задачи

В коде ниже OpenCV в одну строчку разделяет картинку на цветовые каналы H, S и V. Остальной код — визуализация с помощью библиотеки Matplotlib.

Разделение картинки на каналы бывает нужно для ее обработки и последующего анализа. Источник
Разделение картинки на каналы бывает нужно для ее обработки и последующего анализа. Источник

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

Если нужно, каждый из этих каналов можно использовать, чтобы проанализировать или изменить картинку. Источник
Если нужно, каждый из этих каналов можно использовать, чтобы проанализировать или изменить картинку. Источник

Инструментов для ML намного больше, начиная от библиотек для построения моделей и заканчивая визуализацией. Но эта подборка поможет сделать первые шаги в освоении машинного обучения и Python. 

Совет от эксперта: как изучать прикладное машинное обучение

  1. Начните с представления данных с помощью NumPy и их первичного анализа в Pandas.

  2. Затем проверьте гипотезы из разнообразного пула алгоритмов, реализованных в Sklearn.

  3. Если вам нужно использовать классические ML-подходы, близкие к SOTA, на промышленных данных (или хочется выиграть соревнование на Kaggle) — попробуйте одну из трех библиотек: Xgboost, LightGBM или Catboost. Либо переходите к нейросетевым архитектурам в PyTorch или TensorFlow.

  4. После этого можно выбрать конкретную специализацию, например анализ изображений с помощью OpenCV или анализ текстов в NLTK. И продолжить изучение разнообразных алгоритмов, подходов, теорий и библиотек, которые их реализуют.


Skillfactory и НИЯУ МИФИ создали магистерскую программу для тех, кто хочет освоить Data Science и ML до продвинутого уровня. Студенты научатся создавать интеллектуальные модели для разных сфер — от IT и финансов до науки и медицины, обучать их и внедрять в продакшн. Освоят базу по математике и программированию на Python, а еще смогут получить реальные кейсы по ML-обучению в IT-компаниях — партнерах программы.

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