Несмотря на то, что Python - один из самых популярных языков программирования, его стандартный функционал очень ограничен. Нивелируется это огромным количеством пакетов, с помощью которых можно решить практически любые задачи. В том числе и в сферах Data Science и Machine Learning.
К тому же в Python используется простой и понятный синтаксис, что снижает порог вхождения в профессию. Достаточно только владеть английским и полдела сделано.
Поэтому, если вы планируете работать с наукой о данных или обучать собственную нейрость, вам потребуется определенный набор библиотек. Каких именно? Сейчас LabelMe расскажет.
1. NumPy
В NumPy (Numerical Python) встроено множество вычислительных механизмов. Библиотека поддерживает специализированные структуры данных, в том числе — одномерные и многомерные массивы. Это значительно расширяет возможности Python по выполнению различных вычислений. К его особенностям можно отнести:
- Возможность использования и для выполнения простых, и достаточно сложных научных расчётов.
- Поддержка многомерных массивов.
- Множество встроенных методов для выполнения различных вычислений на многомерных массивах.
- Возможность преобразования данных.
- Поддержка не только с числовых, но и других типов данных.
2. SciPy
Эта библиотека построена на базе NumPy. SciPy отлично подходит для выполнения статистических расчётов и поддерживает те же виды данных, что и старший брат. Можно сказать, что SciPy - это как яйцо в яйце: набор подпакетов, в которых реализованы различные вычислительные механизмы.
Например, быстрое преобразование Фурье, обработку изображений, решение дифференциальных уравнений, механизмы линейной алгебры и так далее. Благодаря дополнительным пакетам, SciPy может решать задачи, которые не по зубам NumPy:
- Поддержка числовых вычислений на эффективных структурах данных NumPy.
- Совместим с другими пакетами (задействует возможности других библиотек).
3. Pandas
Pandas отлично проявляет себя в сферах статистики, анализа данных, экономики, финансов. Его первоочередная задача - очистка и первичная оценка данных по общим показателям. К тому же пакет поддерживает объект DataFrame, предназначенный для работы с индексированными массивами. А не большой, но приятный бонус - поддержка различных источников данных от CSV до TSV.
Библиотека уверенно справляется с обработкой больших объёмов данных и при необходимости использует возможности NumPy и SciPy. Впрочем именно взаимодополнение этих пакетов и привело к тому, что чаще всего их использует вместе. Pandas позволяет
- Обменивать данные между структурами в памяти и файлами различных форматов.
- Переформатировать наборы данных (даже создавать сводные таблицы)
- Выполнять трёхэтапные операции типа «разделение, изменение, объединение».
- Работать с ременными рядами: формирование временных периодов и изменение интервалов.
4. StatsModels
StatsModels - сын уже описанных пакетов NumPy и SciPy. С ним вы сможете создавать статистические модели и выполнять статистические исследования, например, обобщённые линейные модели. StatsModels позволяет проводить одномерный и двумерный анализ данных, что необходимо для проверки различных гипотез.
Пакет выпущен под лицензией Modified BSD с открытым исходным кодом (3 пункта). С его интеграцией не придется ломать голову: для этого можно использовать упомянутый выше Pandas. StatsModels позволяет работать с
- Линейной регрессией
- Обобщенными линейными моделями и оценочными уравнениями
- Регрессией с дискретной зависимой переменной
- Анализом временных рядов tsa и временных моделей методами пространства состояний statespace
- Таблицами непредвиденных обстоятельств
- Множественными расчетами с цепными уравнениями
5. Matplotlib
Matplotlib - твой самый верный друг в вопросах визуализации данных. Неважно, идет ли речь о двумерной или трехмерной графике - он справится. Полученные изображения будет не стыдно разместить в отчете, презентации или публикации. Библиотека дружелюбна по отношению к другим Python-пакетам, так что вы сможете легко использовать ее вместе с теми же NumPy и SciPy.
Более того, Matplotlib поддерживает API, позволяющий встраивать создаваемые им графические объекты в различные приложения. Графические представления данных, создаваемые этим пакетом, поддаются глубокой настройке. Matplotlib поддерживает многие виды графиков и диаграмм:
- Графики (line plot)
- Диаграммы разброса (scatter plot)
- Столбчатые диаграммы (bar chart) и гистограммы (histogram)
- Круговые диаграммы (pie chart)
- Ствол-лист диаграммы (stem plot)
- Контурные графики (contour plot)
- Поля градиентов (quiver)
- Спектральные диаграммы (spectrogram)
6. Seaborn
Seaborn — это более высокоуровневое API на базе библиотеки Matplotlib, которое изучает взаимоотношения между переменными. Так что помимо визуализации, эта библиотека неплохо справляется с анализом и исследованием данных.
Если же возвращаться к визуализации, то уместно следующее сравнение. Matplotlib - фотоаппарат, который делает снимки, Seaborn - его фотошоп. Он содержит более адекватные дефолтные настройки оформления графиков. Просто добавьте в код import seaborn и изображения станут симпатичнее.
- Для визуализации распределения метрических переменных используются такие графики, как distplot, jointplot, rugplot, kdeplot.
- Визуализация относительно распределения между парами переменных ( методы PairGrid, pairplot, FacetGrid)
- Создание сложных графиков моделей линейной регрессии
7. Plotly
Эта библиотека позволяет создавать интерактивные графики для последующего анализа взаимоотношений переменных. Пожалуй, ключевым отличием Plotly от Matplotlib является более глубокое, продвинутое построение трёхмерных графиков.
К тому же с Plotly вы сможете удобно просмотреть данные сразу (меняя масштаб, отключая и включая различные переменные) и построить полноценный интерактивный отчёт. Поверьте, на практике это намного круче, чем на словах.
- Визуализация всех необходимых видов графиков: линейные диаграммы, круговые диаграммы, пузырьковые диаграммы, точечные диаграммы, древовидные диаграммы.
- Трехмерная визуализация
- Подготовка интерактивных отчетов и экспорт в формате JSON.
8. Bokeh
Bokeh легко интегрируется с любым фреймворком на Python, поддерживает много видов графиков, но самое главное - она позволяет диаграммы и визуальные элементы JavaScript в веб-приложениях.
Да, это можно сделать и в D3.js, но для этого потребуются костыли. В случае Bokeh вы можете просто писать свой код на Python, а библиотека автоматически сгенерирует JavaScript для сайта или приложения. Это открывает огромные интерактивные возможности.
- Поддерживает визуализацию наборов данных, которые обычно используются в статистике и науке.
- Поддерживает различные форматы выходных данных.
- Существуют версии Bokeh для разных языков программирования.
- Пакет хорошо интегрируется с такими Python-фреймворками, как Django и Flask.
9. Scikit-Learn
Scikit-learn - один из самых популярных пакетов для машинного обучения на Python. Встроенные в него модули дают возможность работать с множеством популярных алгоритмов ML: алгоритм спектральной кластеризации, кросс-валидация, случайный лес, k-средние и так далее. Scikit-learn можно использовать для создания моделей обучения с учителем и без.
При этом Scikit-learn абсолютно бесплатный даже для коммерческого использования. Открытый исходный код буквально лежит на GitHub и ждет вас. А чтобы не осталось никаких сомнений - перечислим, какие задачи поддерживает библиотека:
- Предварительная обработка данных
- Уменьшение размерности
- Выбор модели
- Регрессии и классификации
- Кластерный анализ.
10. Keras
Переходим к тяжелой артиллерии. Keras - это один из самых мощных опенсорсных пакет на Python. Он нужен для глубокого машинного обучения (Deep Learning). С его помощью вы сможете создавать нейросетевые модели на основании самых разных видов данных.
Эта библиотека содержит многочисленные реализации широко применяемых строительных блоков нейронных сетей: слои, целевые и передаточные функции, оптимизаторы, и множество инструментов для упрощения работы с изображениями и текстом.
- Поддерживает широкий набор нейросетевых моделей.
- Содержит встроенные средства для работы с изображениями.
- Поддерживает популярные алгоритмы глубокого обучения.
- Отличается высоким уровнем расширяемости, что позволяет, при необходимости, оснащать его новым функционалом.
Другие наши статьи: