Содержание статьи
Если вы не так давно занимаетесь анализом данных и Data Science (или даже вообще только начинаете свой путь), то скорее всего у вас разбегаются глаза от многообразия доступных инструментов, фреймворков и библиотек.
Что выбрать? С чего проще начать? Чему легче обучиться? Какой инструмент более универсальный? Эти и многие другие вопросы мучают не только вас – опытные аналитики и Data Scientists сталкивались с этими проблемами.
Если говорить об инструментах, то для анализа данных один из самых лучших инструментов – язык Python. Причин тому несколько:
- он широко распространен;
- он хорошо задокументирован;
- он «умеет» делать большинство нужных вам операций (даже самых сложных);
- он достаточно прост в обучении.
Если вы только начали изучать язык, то рекомендуем записаться на наш открытый онлайн-курс «Первый код на Python».
Однако, для разных задач в Python используются разные библиотеки – недостаточно просто установить его на свой компьютер и начать что-то анализировать прям «из коробки». А библиотек и фреймворков за время существования этого языка было разработано очень и очень много, и новому в этом деле человеку порой может быть очень сложно ориентироваться во всем этом пестром многообразия инструментов.
Для того, чтобы внести хоть какую-то ясность и сформировать общее представление о задачах самых популярных библиотек Python, давайте разберем несколько, и вы сами сможете принять решение – подходит вам это или нет.
Поехали!
1. Numpy
Любое взаимодействие с данными будет без базовых математических операций, а также работы с векторами и матрицами. Какой бы датасет вы не анализировали, вам придется считать статистические характеристики; проводить обработку и очистку исходных данных и использовать их для построения визуализаций или для последующего применения моделей машинного обучения.
Именно для этого и существует библиотека Numpy, которая обеспечивает поддержку многомерных массивов и высокоуровневых математических функций.
Вот несколько сильных сторон библиотеки Numpy:
- Вычислительная эффективность – библиотека была создана для проведения вычислений, соответственно, производительности уделяли особое внимание.
- Удобство – синтаксис библиотеки устроен так, что вы можете выполнить сразу несколько совершенно различных действий в одну строчку (например, загрузить данные, привести их к нужной форме и выполнить какое-то арифметическое действие).
- Распространенность – многие популярные библиотеки машинного обучения и построения графики работают максимально эффективно именно с Numpy.
Пример: последовательное выполнение трех действий (загрузка из csv-файла, изменение структуры, возведение в квадрат) с помощью всего лишь одной строки. Подобные операции часто нужны при работе с бизнес-данными, и очень удобно не тратить лишние строчки кода на предобработку, а делать все максимально компактно и читаемо.
2. Scikit-learn
Если Machine Learning для Вас – не просто модный тренд, а набор алгоритмов, то библиотека Scikit-learn вам отлично подойдет. Когда вы используете какой-то из алгоритмов машинного обучения в своей работе, у вас всегда есть два кардинально разных пути: писать алгоритм с нуля самому или использовать уже готовую реализацию из какой-то библиотеки.
Сказать, что “придумывать велосипед” – пустая трата времени, не совсем правильно. Иногда (особенно в учебных целях и для более глубокого погружения в процесс) это бывает крайне полезно. Однако, если вас интересует именно конечный результат, то однозначно вам пригодятся функции библиотеки Scikit-learn. То, что вы бы написали в 100 строчек кода (и потратили бы кучу времени на изучения математики алгоритма), с помощью Scikit-learn можно уместить в 4 строчки!
Вот несколько сильных сторон библиотеки Scikit-learn:
- Взаимодействие с основными библиотеками – в задачи Scikit-learn не входит загрузка и предобработка данных, но для этих целей есть библиотеки типа Numpy и Pandas, с которыми Scikit-learn прекрасно работает в связке.
- Широкий набор инструментов – библиотека содержит массу методов для решения основных задач машинного обучения: классификации, кластеризации, регрессии, понижения размерности и других.
- Наглядная документация – разработчики библиотеки позаботились о пользователях и снабдили все алгоритмы подробным описанием с примерами.
Пример: один из применяемых алгоритмов для понижения размерности в ML – Principal Component Analysis. Для написания собственной функции понадобится не менее 20 строчек кода, “из коробки” Scikit-learn же необходимо всего 3.
3. Tensorflow
Продвигаясь еще глубже по сложности Data Science-алгоритмов, мы можем перейти к обсуждению глубокого обучения (т.е. нейронных сетей). Алгоритмы глубокого обучения уже достаточно крепко интегрировались в современный мир. Распознавание речи, чат-боты, детекция объектов и интеллектуальные помощники, – все это результат развития сферы нейронных сетей.
По мере усложнения алгоритмов, инструменты для их реализации тоже не стоят на месте и становятся все более и более удобными и функциональными с точки зрения разработки. Одной из самых используемых библиотек в области глубокого обучения является разработка Google – библиотека Tensorflow. Библиотека не зря носит свое название, т.к. структурная единица для вычислений – тензор (многомерный массив данных).
Вычисления выражаются как потоки между узлами графа состояний. Использование библиотеки несколько специфично и пройдет какое-то время, прежде чем разработчик полностью освоится со всеми доступными инструментами, но оно того стоит!
Вот несколько сильных сторон библиотеки Tensorflow:
- Неоспоримая популярность – по количеству реализованных проектов в области глубокого обучения Tensorflow остается самым популярным инструментом среди разработчиков.
- Поддержка вычислений на GPU (графических процессорах) – обучение сетей на GPU является много более эффективной процедурой, чем стандартные расчеты на CPU (центральный процессор), и Tensorflow прекрасно эту технологию поддерживает.
- Широкий набор вспомогательных инструментов – вы можете строить визуализации моделей с помощью Tensorboard или использовать TensorFlow Serving для развертывания сети на специальном сервере.
Пример: На официальном сайте Tensorflow есть руководство, как построить небольшую сеть для классификации предметов одежды. Вот пример того, как задать каждый отдельный слой сети и ее параметры.
Кстати, буквально несколько дней назад компания Google опубликовала дополнение к библиотеке Tensorflow – проект Tensorflow Quantum, который позволит создавать квантовые модели, не погружаясь в специфику оборудования.
4. PyTorch
PyTorch – вторая по популярности библиотека для глубокого обучения, созданная под руководством Facebook. Библиотека была запущена в широкое использование в 2017 году, но несмотря на относительную молодость, она стремительно набирает популярность и уже на текущий момент является одной из основных для реализации проектов, связанных с нейронными сетями.
Синтаксис и стиль программирования с использованием Pytorch достаточно прост и интуитивно понятен даже для неопытных программистов и разработчиков, что делает этот фреймворк очень привлекательным для использования.
Вот несколько сильных сторон библиотеки PyTorch:
- Прекрасная документация – разработчики снабдили свой продукт наглядной документацией + в интернете можно найти большое количество подробных тюториалов
- Поддержка вычислений на GPU – так же, как и Tensorflow, PyTorch позволяет эффективно производить расчеты на графических процессорах
- Возможность параллелизма – дополнительное использование параллельных вычислений позволяет делать процесс работы с моделями еще более эффективным
Пример: демонстрация того, как с помощью PyTorch задать архитектуру сети и правила ее работы.
5. Matplotlib
Мы уже обсудили библиотеки для машинного обучения и глубокого обучения, но не затрагивали особо построения графиков, диаграмм и других визуальных элементов. Если вы хотя бы когда-нибудь работали с проектами в области статистики, экономики или Data Science, вы точно знаете, что ни один такой проект не возможен без визуального отображения полученных (или даже промежуточных) результатов.
Python обладает широким набором инструментов для этого, простейший из которых (но достаточно функциональный) – библиотека Matplotlib. Библиотека не очень проста в использовании, но для построения достаточно низкоуровневых визуализаций (например, точечных графиков или линейных диаграмм) ее функционала более чем достаточно.
Вот несколько сильных сторон библиотеки Matplotlib:
- Поддержка основных визуальных примитивов – от обычных линейных графиков до спектральных диаграмм.
- Возможность дополнительного редактирования – изменение осей, подписей, легенд и прочего.
- Эффективное взаимодействие с другими библиотеками – например, строить графику на основе массивов Numpy будет очень легко и приятно!
Пример: учитывая, что мы затронули очень эстетическую тему, давайте не будем смотреть на код, а просто полюбуемся примером графики:
6. Seaborn
Раз уж мы заговорили про визуализацию на Python и начали с Matplotlib, то никак нельзя обойти стороной еще одну отличную библиотеку – Seaborn. Этот инструмент отлично подходит для создания высокоуровневой графики и сделан он на основе известного уже нам Matplotlib. С помощью этой библиотеки можно строить как примитивные графики, так и более сложные объекты.
При этом стандартные настройки Seaborn несколько более “изящные”, чем в Matplotlib, из-за чего даже самая простая графика выглядит привлекательней (хотя на вкус и цвет товарищей нет!).
Вот несколько сильных сторон библиотеки Seaborn:
- Высокоуровневая графика – и обычные scatter plots, и визуализации распределений, и heat maps, и cluster maps, и многое-многое другое.
- Известность – это гарантирует широкое сообщество поклонников этой библиотеки, а значит обучающих материалов полно + документация библиотеки довольно приятная.
- Интеграция с Pandas – очень удобно, что процесс обработки данных и построения визуальных элементов можно эффективно выстроить одним “конвейером”.
Пример: как и в случае с Matplotlib, давайте просто посмотрим на картинку, без кода – ведь визуализации Seaborn выглядят еще приятней!
Заключение
Мы рассмотрели лишь небольшую часть полезных библиотек для Data Science и затронули почти все основные аспекты: Machine Learning, глубокое обучение, визуализацию, работу с данными. Естественно, популярных и полезных модулей в Python намного больше, чем эти 6 пунктов.
Однако, если вы только начинаете свой путь в анализе данных или же не имеете большого опыта в этой области, то лучше сосредоточиться именно на азах, а по мере роста своих навыков и знаний охватывать все больше интересных библиотек и фреймворков.
Автор: Андрон Алексанян, практикующий Data Scientist