Расширение истории любви с помощью выбора дизайна

Возможно, вы уже заметили, что мы в RStudio уделяем большое внимание истории любви R и Python. Это обусловлено нашими усилиями по объединению групп специалистов по обработке и анализу данных и преодолению языкового барьера. Наши усилия во многом характеризуются разработкой пакета {reticulate} и нашего профессионального набора продуктов RStudio Team.

История любви R & Python основана на аксиоме, согласно которой специалистов по данным нельзя принуждать использовать какой-то один инструмент. Они должны иметь возможность использовать любые инструменты, которые а) они предпочитают или б) эффективно выполняют свою работу. По большей части это утверждение «используйте R или Python, мы вас поддержим». Но мы можем пойти дальше и «использовать R и Python». Это небольшой скачок в вашей ментальной структуре.

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

  • Диспетчер пакетов RStudio: обеспечивает централизованное расположение для установки библиотек R и Python.
  • RStudio Connect: предоставляет способ развертывания содержимого R и Python.
  • RStudio Server Pro: предоставляет централизованное и масштабируемое место для разработки R и Python.

История любви R & Python

История любви R и Python — это то, на что мы опираемся здесь, в RStudio. Об этом наиболее ярко свидетельствует наша разработка {reticulate} R-библиотеки, в которой реализованы такие функции, как выполнение фрагментов кода Python в документах R Markdown, что дает вам всю мощь R Markdown и Python. Кроме того, RStudio IDE была улучшена для отображения объектов Python в вашей среде.

Одна из ключевых проблем заключается в том, что reticulate нельзя использовать, чтобы помочь пользователям Python вызывать R. reticulate помогает пользователям R, которые хотят использовать Python, но не наоборот. Библиотека существует, но ее не так легко использовать, как reticulate, которая сопряжена с теми же сложностями, что и любая другая установка Python. Так куда же мы пойдем отсюда?

Выход за рамки R и Python

Ясно, что история любви R & Python в какой-то степени устарела. reticulate — это родной для R способ использования Python в коде R. reticulate также увеличивает вероятность возникновения проблем управления средой. Теперь вы управляете не только средой R или Python, но и пересечением двух сред. Кто-то, вероятно, может предоставить математику, чтобы проиллюстрировать возможные сложности здесь, но это не я!

Вы можете подумать, что я звучу как пессимист. На это я бы сказал, подожди минутку! Одно из решений все это время лежало перед нами — API.

API очень кратко

Интерфейсы прикладного программирования (API) — это способ разрешить использование инструмента другим независимо от базовой реализации. Проще говоря, API позволяют машинам общаться с машинами. Существует множество различных типов API, хотя чаще всего вы сталкиваетесь с RESTful API. RESTful API работают через HTTP (протокол передачи гипертекста) — то, что использует Интернет. Каждый достойный инструмент может выполнять вызов HTTP API. В R у нас есть и в Python у нас есть .

Если вы когда-либо пытались получить твиты из Twitter с помощью {rtweet} или , вы взаимодействовали с API. И rtweet, и tweepy в конечном итоге делают одни и те же HTTP-запросы. Разница заключается в языке, на котором был запущен запрос. Главное, что нужно усвоить, это то, что API-интерфейсам все равно, на каком языке вы их вызываете.

Делая скачок

API позволяют нам разрабатывать исключительно модульный код/функциональность. Точно так же, как если вы хотите сделать некоторые функции воспроизводимыми, вы можете сделать функцию, чтобы упростить это, вместо этого вы можете создать API. Думайте об API как о функции, которая может быть доступна абсолютно любому. Если вашей целевой аудиторией являются только пользователи R, вы можете создать пакет. Однако, скажем, у вас есть команда веб-разработчиков, которые создают новое приложение и хотят использовать предсказания вашей модели, вы должны создать API. Или, скажем, у вас есть группа специалистов по обработке и анализу данных, которая разработала нейронную сеть в PyTorch, и вы хотите предоставлять прогнозы через блестящее приложение, которое будет размещать модель в API.

Инструменты

Инструменты для написания кода R и Python уже существуют. И они уже великолепно поддерживаются в RStudio Connect. В рамках экосистемы R пакет сантехник позволит вам превратить любую функцию R в конечную точку RESTful API. И в экосистеме Python Flask служит той же цели. Теперь, когда вам нужно совместное использование инструментов между командами, я рекомендую подумать о создании API. Вашим коллегам не придется переводить ваш код, учить новый язык или создавать громоздкий промежуточный этап экспорта и преобразования данных.

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

Мотивирующие примеры

В другом посте, который можно найти здесь, я кратко рассмотрю два мотивирующих примера, которые иллюстрируют, как можно использовать API-интерфейс водопроводчика для соответствия модели XGBoost с помощью Scikit Learn, и исследовательский анализ финансовых данных, предоставленных из приложения Flask.

Первоначально опубликовано на http://josiahparry.com.

Отказ от ответственности: это личное мнение, которое не подтверждается и не публикуется RStudio. Мои утверждения не представляют никого, кроме меня самого, а иногда даже и этого.