Борцовский поединок, не похожий ни на какой другой.

После нескольких лет программирования на Python и R я все еще борюсь с этим. Какой язык лучше всего использовать для науки о данных? Мне нравится думать о себе как о технологе со степенью статистики, который занимается наукой о данных. Но даже я не могу уклониться от простых в использовании аспектов R. Очарование языка программирования R осталось со мной, даже когда я отважился на Pandas, Numpy и Scipy. Надежные пакеты Python для машинного обучения меня искренне поражают. Это буквально универсальный магазин. В то же время мне буквально требуется менее 30 минут, чтобы запустить простой статистический анализ в R для изучения моего набора данных. Пакеты машинного обучения и глубокого обучения теперь также становятся нормой в R.

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

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

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

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

Разработка программного обеспечения требует тщательного проектирования кода для простоты и эффективности. Объектно-ориентированные языки обычно поддаются разработке программного обеспечения просто потому, что код становится более масштабируемым по мере роста системы.

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

Функциональное программирование против ООП

Функциональный язык программирования - это язык, который:

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

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

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

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

Почему Data Science поддается функциональному программированию?

Часто цель Data Science - решить проблему. Часто он носит функциональный характер. Сами модели по сути представляют собой уравнения, в которых возвращаемые значения должны быть одинаковыми. Даже при глубоком обучении сами данные не меняются. Добавляются новые ценности. Но данные остаются прежними. Неизменяемое состояние важно для согласованности вывода в модели. Функциональное программирование - это объединение функций в цепочку для работы с простой структурой данных. Такой дизайн упрощает реализацию параллелизма. В любом проекте машинного обучения или глубокого обучения параллелизм важен при работе с большими наборами данных.

Природа R и Python

Python - это интерпретируемый язык программирования общего назначения высокого уровня. Вы можете заниматься функциональным программированием на Python. Но Python не является функциональным языком программирования. Он не соответствует техническим требованиям чистоты в контексте функционального языка программирования. Python обслуживает гораздо больше вариантов использования объектно-ориентированного программирования. На самом деле Python - хороший язык для объектно-ориентированного программирования. Вы обнаружите, что, поскольку Python универсален, он часто используется в разработке программного обеспечения. Несмотря на то, что это не строго функциональный язык программирования, у него есть надежные пакеты для Data Science.

R - это прежде всего функциональный язык программирования. Он содержит множество инструментов для создания и управления функциями. С функциями можно делать что угодно, как с векторами. Анонимные функции дают вам возможность использовать функции без указания им имени. Это делает возможным объединение функций в цепочку, что полезно в машинном обучении и глубоком обучении. Почти все объекты R неизменяемы. Однако среды R изменчивы. R имеет надежные библиотеки визуализации, такие как ggplot2, plot, lattice и т. Д. Статистики используют R для визуализации данных. Часто быстрая визуализация данных может дать представление о данных, которое приводит к дальнейшему статистическому анализу.

Что лучше: R против Python?

В реальном мире часто бывает сложно выбрать R или Python для всех ваших усилий в области науки о данных.

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

Лично для моих проектов Data Science я решил использовать как R, так и Python в сочетании с другими языками для различных этапов процесса Data Science.

Исследование неструктурированных данных

80% мировых данных - это фактически неструктурированные данные. Такие данные, как текст, видео и изображения, являются неструктурированными данными. Python имеет множество пакетов, таких как NLTK, scikit-image, pyPI для обработки естественного языка, обработки изображений и анализа голоса. Осмысление неструктурированных данных часто означает, что данные необходимо преобразовать в структурированные. Python очень полезен для этого преобразования.

Очистка данных: структурированные или полуструктурированные данные

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

Исследование и моделирование в R

После того, как у вас есть структурированные или частично структурированные данные, гораздо проще выполнять исследование данных в R. Я могу написать чистый код для множества статистических анализов, чтобы познакомиться с моими данными. Также легко использовать пакеты визуализации для визуализации данных, которые помогут в моем анализе: ANOVA, многомерные корреляции и регрессии, факторный анализ и геостатистика. Логистическая регрессия и Анализ временных рядов легко реализовать в R с простой визуализацией. Выбор функций легко выполняется с помощью R с использованием пакетов caret package и fastcaret. Выбор модели осуществляется легко. Модели машинного обучения, такие как LDA, CART, kNN, SVM и RF, легко реализуются в R. Каждый алгоритм имеет свои собственные пакеты в R. Для обучения набора данных и перекрестной проверки требуется всего несколько строк кода. Даже Deep Learning, библиотека Keras в R с Tensor Flow теперь упрощают эту задачу в R.

Исследование и моделирование на Python

Исследование и моделирование данных не ограничивается R. Python имеет такие пакеты, как NumPy, Matplotlib и Pandas, которые могут помочь в процессе исследования данных. Seaborn используется для визуализации почти так же, как ggplot2 в R. Scipy предоставляет все необходимое для традиционного статистического анализа. SciKit-Learn обеспечивает реализацию алгоритмов машинного обучения, перекрестную проверку и т. Д. Использование Keras, TensorFlow и PyTorch, глубокое обучение в Python также не является намного более простым процессом. Машинное обучение и глубокое обучение часто означают, что вы работаете с большими наборами данных, которые хранятся в облаке. Скорее всего, инфраструктурный аспект проекта Data Science подтолкнет любого специалиста по данным к AWS, Azure и Google Cloud. Это будет означать, что Python будет языком по умолчанию для использования в таком крупномасштабном проекте Data Science.

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

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

Об авторе

Цзюнь Ву (Jun Wu) - автор контента по технологиям, искусственному интеллекту, науке о данных, психологии и воспитанию детей. Имеет опыт программирования и статистики. В свободное время она пишет стихи и ведет блоги на своем сайте.

Подпишитесь на мою еженедельную рассылку, чтобы оставаться на связи