Рубріки: Теория

Корзина, полная змей: обзор популярных модулей и библиотек Python для Data Science

Игорь Грегорченко

Это большой обзорный пост, который поможет новичкам  быстро сориентироваться в дебрях терминологии Data Science. Мы последовательно опишем все основные модули, библиотеки и утилиты, которые должен знать любой, претендующий на изучение больших данных. Наука о данных еще никогда не была так доступна, как с приходом великолепных инструментов на базе Python.

Данный пост – это вольный перевод вот этого оригинального поста от Стефана Селтманна, который делится своей мудростью для изучения основ науки о данных. Мы поверхностно рассмотрим все основные инструменты из мира ML/AI/DS, чтобы в итоге получить общее представление и майнд-карту того, что нужно знать при изучении науки о данных.

Введение

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

Кроме того, тот, кто знаком с моим github, знает, что я большой поклонник как R, так и Python в повседневной работе.

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

В этом контексте хорошая серверная установка с большим количеством металла (например, 96Gig-RAM) творит чудеса.

Поскольку такой вариант не всегда доступен для простых смертных, я обратился к более производительной альтернативе, а именно к альтернативам R на основе Python, тем более что я уже давно использую Python для ETL и подготовки данных.

Альтернативы на основе Python

Machine Learning в Python не является уникальным, поскольку многое можно аналогично реализовать на R, даже если часто требуются соответствующие расширения. Если просто взглянуть на шпаргалку по алгоритмам scikit learn, на первый взгляд кажется, что там вообще нет обычных методов регрессии. Сразу же делается скачок к регуляризованным методам, а вместо логистической регрессии для решения задачи бинарной классификации предлагается использовать SVM.

Даже если вся эта мешанина модулей Python кажется вам запутанной и недоступной — как корзина, полная змей, — я вижу в этой технологии огромный потенциал. Она позволяет создавать очень производительные, формально строгие, высокоавтоматизированные и легко развертываемые приложения машинного обучения, которые можно масштабировать.

Обзор пакетов

Следующий список элементов предназначен для того, чтобы дать новичкам начальный путеводитель по джунглям аббревиатур и магических названий из мира Python DS. Погнали!

NumPy

NumPy предоставляет в ваше распоряжение высокопроизводительные структуры данных. Он отлично подходит для обработки больших данных. Основы были реализованы на языках C и Fortran, что является причиной хорошей производительности.

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

Типы данных и структуры данных NumPy составляют основу для всех последующих технологий Python, перечисленных здесь.

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

Что вы можете делать с помощью NumPy?

  • Базовые операции с массивами: сложение, умножение, разрезание, сплющивание, изменение формы, индексация массивов.
  • Расширенные операции с массивами: стекирование массивов, разбиение на секции, трансляция массивов.
  • Работа с DateTime или линейной алгеброй.
  • Базовая нарезка и расширенная индексация в NumPy Python.

SciPy

SciPy развивает NumPy и расширяет возможности последнего за счет научных вычислений. Так сказать, SciPy и NumPy можно рассматривать как небольшую Python-альтернативу Matlab.

SciPy довольно малоинтересен для повседневного анализа в области машинного обучения.

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

Pandas

Pandas также развивает NumPy и улучшает удобство преобразования и анализа данных.

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

Объекты Pandas упрощают работу, предоставляя методы для описательной статистики и визуализации. Таким образом, полностью реализованы стандарты для исследовательского анализа данных. Учитывая богатство методов, стоит часто просматривать документацию.

Когда использовать? Pandas — это идеальный инструмент для работы с данными. Он предназначен для быстрого и простого манипулирования данными, чтения, агрегирования и визуализации.

Pandas берет данные из файла CSV или TSV, или базы данных SQL, и создает объект Python со строками и столбцами, называемый рамкой данных. Каркас данных очень похож на таблицу в статистическом программном обеспечении, например, Excel или SPSS.

Что можно делать с помощью Pandas?

  • Индексировать, манипулировать, переименовывать, сортировать, объединять фрейм данных.
  • Обновлять, добавлять, удалять столбцы из фрейма данных.
  • Вменять отсутствующие файлы, обрабатывать отсутствующие данные или NANs.
  • Построение данных с помощью гистограммы или квадратной диаграммы.

Это делает Pandas базовой библиотекой при изучении Python для Data Science.

scikit-learn

Этот пакет является центральной библиотекой машинного обучения Python. Он предлагает множество современных процессов для каждой области машинного обучения. Поскольку для каждого вида моделирования используется один и тот же интерфейс, можно тестировать различные модели друг с другом с помощью общих кодов гораздо проще, чем в R. Замечателен также набор стандартных инструментов для преобразования переменных.

Недостатком в данном контексте является тот факт, что scikit modeling только моделирует и не делает многого другого. Нет ни сводки модели, ни графиков, даже некоторые простейшие диагностики приходится вычислять вручную и т.д.

Название scikit происходит от «SciPy Toolkit». Таким образом, он был разработан на основе SciPy, поскольку сам SciPy не включает соответствующие методы.

Что можно сделать с помощью Scikit Learn?

  • Классификация: обнаружение спама, распознавание изображений.
  • Кластеризация: реакция на лекарство, цена акций.
  • Регрессия: сегментация клиентов, группировка результатов экспериментов.
  • Снижение размерности: визуализация, повышение эффективности.
  • Выбор модели: повышение точности за счет настройки параметров.
  • Предварительная обработка: подготовка входных данных в виде текста для обработки алгоритмами машинного обучения.

Scikit Learn фокусируется на моделировании данных, а не на манипулировании ими. У нас есть NumPy и Pandas для обобщения и манипулирования данными.

TensorFlow

В 2017 году я получил USB-флешку с TensorFlow в качестве благодарности за то, что был докладчиком на мероприятии Google WTM. На USB была официальная документация по TensorFlow. Не имея на тот момент никакого представления о том, что такое TensorFlow, я погуглил.

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

Среди всех библиотек TensorFlow — один из самых развитых инструментов. Такие гиганты, как Google, Coca-Cola, Airbnb, Twitter, Intel, DeepMind, все используют TensorFlow!

Когда использовать? TensorFlow весьма эффективен, когда речь идет о классификации, восприятии, понимании, обнаружении, предсказании и создании данных.

Что делать с TensorFlow?

  • Распознавание голоса/звука — IoT, автомобилестроение, безопасность, UX/UI, телекоммуникации.
  • Анализ настроений — в основном для CRM или CX.
  • Приложения на основе текста — обнаружение угроз, Google Translate, интеллектуальный ответ в Gmail.
  • Распознавание лиц — Deep Face от Facebook, маркировка фотографий, интеллектуальная разблокировка.
  • Временные ряды — рекомендации от Amazon, Google и Netflix.
  • Работа с видео — обнаружение движения, обнаружение угроз в режиме реального времени в играх, системах безопасности, аэропортах.

Matplotlib

Это, несомненно, моя любимая и квинтэссенция библиотеки Python. Вы можете создавать истории с помощью данных, визуализированных с помощью Matplotlib. Это еще одна библиотека из стека SciPy, Matplotlib также строит двумерные графики.

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

В то же время она предлагает достаточно «высокоуровневых» функций для новичков, чтобы быстро создать первые графики на уровне публикации.

Когда использовать? Matplotlib — это библиотека построения графиков для Python, которая предоставляет объектно-ориентированный API для встраивания графиков в приложения. Она представляет собой близкое подобие MATLAB, встроенного в язык программирования Python.

Что можно делать с помощью Matplotlib?

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

  • Графики линий.
  • Графики разброса.
  • Площадные графики.
  • Гистограммы и гистограммы.
  • Круговые диаграммы.
  • Контурные диаграммы.
  • Колчанные диаграммы.
  • Спектрограммы.

Matplotlib также облегчает работу с метками, сетками, легендами и некоторыми другими сущностями форматирования в Matplotlib. В общем, все, что можно нарисовать!

Statsmodel

Statsmodel — это новая альтернатива scikit-learn, которая значительно больше вдохновлена R и больше ориентирована на классическое моделирование и добычу данных. После расчета модели вы получаете красивое резюме с полезной подборкой ключевых показателей. Объект модели также включает множество повторно используемых вычислений, знакомых по R. Есть даже интерфейс, который принимает формулы модели в той же нотации, что и в R.

Когда использовать? Statsmodels — это универсальный пакет Python, который обеспечивает простые вычисления для описательной статистики, а также оценки и выводы для статистических моделей.

Что делать с помощью Statsmodels?

  • Линейная регрессия.
  • Корреляция.
  • Обыкновенные наименьшие квадраты (OLS) для экономистов!
  • Анализ выживаемости.
  • Обобщенные линейные модели и Байесовская модель.
  • Одномерный и двумерный анализ, проверка гипотез (в общем, все, что может R!).

IPython

Прежде всего, IPython — это интерактивная командная строка для Python. Интеллектуальное автозаполнение значительно облегчает работу с данными. Однако нельзя автоматически приравнивать консоль к блокноту IPython.

Блокнот поднимает консоль IPython до уровня рабочей среды на основе веб-технологий, которая включает в себя множество функций юзабилити, визуализирует графики и выходные данные во время работы в коде, предоставляет возможности для публикации с точки зрения «воспроизводимых исследований». Поэтому тот, кто ищет альтернативу R knitr, обязательно приходит к IPython notebook.

Приятные и перспективные бонусы

Настало время, когда мы изучили путеводитель по лучшим библиотекам Python для науки о данных, и можем рассмотреть четыре бонусные библиотеки! Они не входят в нынешние топы, но на них стоит обратить внимание тем, кто хочет оседлать завтрашние тренды.

  1. SpaCy

SpaCy — это библиотека с открытым исходным кодом, используемая для продвинутого NLP для Python и Cython (язык программирования Python для придания C-подобных ощущений и производительности с кодом Python, плюс синтаксис, вдохновленный C).

  1. Bokeh

Bokeh — это библиотека Python, которую я рекомендовал бы выбрать для интерактивной визуализации данных. При наличии таких инструментов, как Tableau, QlikView или PowerBI, зачем нам нужен Bokeh?

Во-первых, Bokeh позволяет быстро строить сложные статистические графики с помощью простых команд. Он поддерживает HTML, блокнот или вывод на сервер. Во-вторых, можно интегрировать визуализацию Bokeh в приложения на Flask и Django или в визуализации, написанные на других библиотеках, таких как matplotlib, seaborn, ggplot.

  1. Gensim

Gensim, на мой взгляд, сильно отличается от того, что мы видели до сих пор. Он автоматически извлекает семантические темы из документов с высокой эффективностью и без особых усилий. Алгоритмы Gensim являются автономными, что намекает на то, что не требуется никакого человеческого ввода — просто обычные текстовые документы, а затем выполняется извлечение семантики.

  1. NLTK

NLTK (Natural Language Toolkit) в основном работает с человеческим языком, а не с компьютерным. Это отличный инструмент для обработки естественного языка (NLP). Он содержит библиотеки для обработки текста, с помощью которых можно выполнять токенизацию, синтаксический анализ, классификацию, тегирование и семантическое обоснование данных.

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

Сложная установка для начинающего

Если человек хочет попробовать эти технологии, он наверняка потерпит неудачу при начальной установке названных пакетов, по крайней мере, при использовании Windows. Обычно на текущей установке python достаточно команды типа «pip install sklearn».

Однако она прерывается, если не установлен ряд компиляторов, например VisualStudio. Если у человека нет компьютерного образования или других потребностей в подобных компиляторах, он не хочет загромождать свою установку различными компиляторами. Альтернативой может быть установка предварительно скомпилированных неофициальных двоичных файлов, как это сделал я.

Anaconda

Лучшим выходом в этой ситуации, вероятно, будет установка расширенного дистрибутива Python, такого как Anaconda. Он включает в себя все вышеупомянутые пакеты и многое другое. Он немного более обширен, чем обычная установка Python. Однако он идеально приспособлен для анализа данных, и есть даже коммерческие версии Continum Analytics Enterprise.

Подведение итогов

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

Тем не менее, я надеюсь, что этот пост помог новичкам сориентироваться в дебрях терминологии Data science.

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023