• Оформление базовой графики R

    • Translation

    Базовая графика в R плоха для печати (если честно, можно было получше выбрать значения по умолчанию). В целом, эти функции для некоторых — признак заката эры R. Думаю, большинство людей согласится, что есть в R графические функции и получше (например, ggplot2). Но иногда бывет целесообразно сделать график именно с помощью базовых функций. Например, если графика в вашей публикации должна быть воспроизводима даже спустя пять лет.

    В этом посте рассмотрим методы, позволяющие кардинально изменить внешний вид базовой графики в R. С некоторыми (окей, иногда большими) усилиями можно изменить все параметры графика именно так, как вам нужно.
    Читать дальше →
    • +17
    • 9.6k
    • 4
  • Как построить географическую панель наблюдения с данными в реальном времени

    • Translation
    В этом посте покажу, как построить интерактивную географическую панель наблюдения с Displayr, Plotly и R. Особенно интересно, что она отслеживает позицию военных самолетов в реальном времени. Для этого я собираюсь взять данные из двух разных источников (регионы на основании размера ВВС и отслеживание позиции самолетов в реальном времени). Панель наблюдения отображает динамические данные двумя способами: оттенок региона (чтобы показать численность ВВС в стране) и точки-маркеры (для позиций самолетов). Потом я построю карту, чтобы аккуратно и красиво отобразить все эти данные.
    Читать дальше →
  • ggplot2: как легко совместить несколько графиков в одном, часть 3

    • Translation
    • Tutorial
    Эта статья шаг за шагом покажет, как совместить несколько ggplot-графиков на одной или нескольких иллюстрациях, с помощью вспомогательных функций, доступных в пакетах R ggpubr, cowplot и gridExtra. Также опишем, как экспортировать полученные графики в файл.
    Первая часть
    Вторая часть
    Читать дальше →
    • +18
    • 10.9k
    • 5
  • ggplot2: как легко совместить несколько графиков в одном, часть 2

    • Translation
    • Tutorial
    Эта статья шаг за шагом покажет, как совместить несколько ggplot-графиков на одной или нескольких иллюстрациях, с помощью вспомогательных функций, доступных в пакетах R ggpubr, cowplot и gridExtra. Также опишем, как экспортировать полученные графики в файл.
    Читать дальше →
  • ggplot2: как легко совместить несколько графиков в одном, часть 1

    • Translation
    • Tutorial
    Эта статья шаг за шагом покажет, как совместить несколько ggplot-графиков на одной или нескольких иллюстрациях, с помощью вспомогательных функций, доступных в пакетах R ggpubr, cowplot и gridExtra. Также опишем, как экспортировать полученные графики в файл.
    Читать дальше →
  • R и большие данные: использование Replyr

    • Translation
    replyr — сокращение от REmote PLYing of big data for R (удаленная обработка больших данных в R).

    Почему стоит попробовать replyr? Потому что он позволяет применять стандартные рабочие подходы к удаленным данным (базы данных или Spark).

    Можно работать так же, как и с локальным data.frame. replyr предоставляет такие возможности:

    • Обобщение данных: replyr_summary().
    • Объединение таблиц: replyr_union_all().
    • Связывание таблиц по строкам: replyr_bind_rows().
    • Использование функций разделения, объединения, комбинирования (dplyr::do()): replyr_split(), replyr::gapply().
    • Аггрегирование/распределение: replyr_moveValuesToRows() / replyr_moveValuesToColumns().
    • Отслеживание промежуточных результатов.
    • Контроллер объединений.

    Скорее всего, вы всё это делаете с данными локально, поэтому такие возможности сделают работу со Spark и sparklyr гораздо легче.

    replyr — продукт коллективного опыта использования R в прикладных решениях для многих клиентов, сбора обратной связи и исправления недостатков.

    Примеры ниже.
    Читать дальше →
  • Быстрая загрузка данных из файлов в R

    • Translation
    Недавно мы писали приложение на Shiny, где нужно было использовать очень большой блок данных (dataframe). Это непосредственно влияло на время запуска приложения, поэтому пришлось рассмотреть ряд способов чтения данных из файлов в R (в нашем случае это были csv-файлы, предоставленные заказчиком) и определить лучший.

    Цель этой заметки — сравнить:

    1. read.csv из utils — стандартный способ чтения csv-файлов в R
    2. read_csv из readr, который в RStudio заменил предыдущий метод
    3. load и readRDS из base, и
    4. read_feather из feather и fread из data.table.
    Читать дальше →
    • +15
    • 7.5k
    • 5
  • Отслеживание хода выполнения в R

    • Translation
    Неважно, отдаем ли мы себе в этом отчет, но когда нужно подождать, мы волнуемся и сгораем от нетерпения. Особенно это касается ожидания «вслепую», т.е. когда неизвестно, сколько же еще придется мучиться. Как выяснил Брэд Аллан Майерс, считающийся изобретателем индикатора состояния в 1980-х, возможность отслеживать ход выполнения во время ожидания может значительно улучшить механизм взаимодействия пользователя с приложением (Майерс, 1985).


    Типичный индикатор состояния от Simeon87 [GPL], Wikimedia Commons

    Поскольку я программирую на R для исследований в биоинформатике, мой код обычно не для широкой публики, но все же важно, чтобы мои пользователи, то бишь коллеги и исследователи, были счастливы, насколько это возможно. Но отслеживание хода выполнения в R — не самая простая задача. В этой статье представлены несколько возможных решений, в том числе и мое собственное (pbmcapply).
    Читать дальше →
    • +18
    • 6.1k
    • 5
  • Создание интерактивных графиков с R и Highcharts

    • Translation
    • Tutorial
    Иногда в попытках решить простые задачи приходят в голову великие идеи. Это особенно верно для разработчиков, которые готовы приложить массу усилий для решения простой проблемы к полному своему удовлетворению. Эта история о том, как Торстейн Хенси, основатель и СРО Highcharts искал простой инструмент для создания графиков, чтобы поместить на свою домашнюю страницу замеры глубины снега на Викафьеллет, местной горе, где у семьи был коттедж. Разочаровавшись в обычных flash-расширениях и коммерческих решениях, доступных на тот момент, он решил создать собственное и, конечно же, им поделиться.

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

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

    • Translation
    • Tutorial
    Эта статья посвящена кластеризации, а точнее, моему недавно добавленному в CRAN пакету ClusterR. Детали и примеры ниже в большинстве своем основаны на пакете Vignette.

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

    Наиболее известные примеры алгоритмов кластеризации — кластеризация на основе связности (иерархическая кластеризация), кластеризация на основе центров (метод k-средних, метод k-медоидов), кластеризация на основе распределений (GMM — Gaussian mixture models — Гауссова смесь распределений) и кластеризация на основе плотности (DBSCAN — Density-based spatial clustering of applications with noise — пространственная кластеризация приложений с шумом на основе плотности, OPTICS — Ordering points to identify the clustering structure — упорядочивание точек для определения структуры кластеризации, и др.).

    В первой части: гауссова смесь распределений (GMM), метод k-средних, метод k-средних в мини-группах.
    Читать дальше →
  • Кластеризация с пакетом ClusterR, часть 1

    • Translation
    • Tutorial
    Эта статья посвящена кластеризации, а точнее, моему недавно добавленному в CRAN пакету ClusterR. Детали и примеры ниже в большинстве своем основаны на пакете Vignette.

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

    Наиболее известные примеры алгоритмов кластеризации — кластеризация на основе связности (иерархическая кластеризация), кластеризация на основе центров (метод k-средних, метод k-медоидов), кластеризация на основе распределений (GMM — Gaussian mixture models — Гауссова смесь распределений) и кластеризация на основе плотности (DBSCAN — Density-based spatial clustering of applications with noise — пространственная кластеризация приложений с шумом на основе плотности, OPTICS — Ordering points to identify the clustering structure — упорядочивание точек для определения структуры кластеризации, и др.).
    Читать дальше →
  • Запуск функций R на нескольких машинах

    • Translation
    • Tutorial
    Как мы показали в «Небольшом введении в параллельное программирование на R», одно из преимуществ R — легкость, с которой можно воспользоваться преимуществами параллельного программирования для ускорения вычислений. В этой статье мы расскажем, как перейти от запуска функций на нескольких процессорах или ядрах к запуску на нескольких машинах (с целью еще большего масштабирования и ускорения).

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

    • Подключайте более мощные параллельные библиотеки, например, Intel BLAS (доступна под Linux, OS X и Windows как часть дистрибутива Microsoft R Open). Это позволит заменить уже используемые библиотеки их параллельными версиями, благодаря чему получите ускорение (на соответствующих задачах, например, связанных с линейной алгеброй в lm()/glm()).

    • Вынесите обработку задач моделирования из R во внешнюю библиотеку для параллелизации. Это стратегия, которую используют следующие системы: методы rx от RevoScaleR (теперь Microsoft Open R), методы h2o от h2o.ai, RHadoop.

    • Используйте утилиту parallel в R, чтобы запускать функции на других экземплярах R. Эта стратегия из «Небольшого введения в параллельное программирование на R» и ряда библиотек на основе parallel. Фактически это реализация удаленного вызова процедуры через сокет или сеть.

    Рассмотрим подробнее третий подход.
    Читать дальше →
  • Небольшое введение в параллельное программирование на R

    • Translation
    • Tutorial
    Давайте поговорим об использовании и преимуществах параллельных вычислений в R.

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

    Обычно, для того, чтобы заставить компьютер больше работать, сначала нужно потрудиться самому аналитику, программисту или создателю библиотеки, чтобы организовать вычисления в виде, удобном для параллелизации. В лучшем случае кто-то уже сделал это за вас:
    • Хорошие параллельные библиотеки, например, многопоточные BLAS/LAPACK, включены в Revolution R Open (RRO, сейчас Microsoft R Open) (смотреть здесь).
    • Специализированные параллельные расширения, предоставляющие свои собственные высокопроизводительные реализации важных процедур, например, методы rx от RevoScaleR или методы h2o от h2o.ai.
    • Фреймворки абстрактной параллелизации, например, Thrust/Rth.
    • Использование прикладных библиотек R, связанных с параллелизацией (в частности, gbm, boot и vtreat). (Некоторые из этих библиотек не используют параллельные операции, пока не задано окружение для параллельного выполнения.)
    Читать дальше →
  • Распознавание образов в R с использованием сверточных нейронных сетей из пакета MXNet

    • Translation
    • Tutorial
    Это подробная инструкция по распознаванию образов в R с использованием глубокой сверточной нейронной сети, предоставляемой пакетом MXNet. В этой статье приведен воспроизводимый пример, как получить 97,5% точность в задаче распознавания лиц на R.

    image

    Читать дальше →
    • +33
    • 12.9k
    • 2
  • Лучшие пакеты для машинного обучения в R, часть 2

    • Translation
    Один из наиболее частых вопросов, с которыми сталкиваются специалисты по обработке и анализу данных — «Какой язык программирования лучше всего использовать для решения задач, связанных с машинным обучением?» Ответ на этот вопрос всегда приводит к сложному выбору между R, Python и MATLAB. Вообще говоря, никто не может дать объективный ответ, какой же язык программирования лучше. Конечно, язык, который вы выбираете для машинного обучения, зависит от ограничений конкретной задачи и данных, предпочтений самого специалиста и тех методов машинного обучения, которые нужно будет применить. Согласно опросу о любимом инструменте пользователей Kaggle для решения задач анализа данных R предпочитают 543 из 1714.

    Сейчас в CRAN доступен 8341 пакет. Кроме CRAN, есть и другие репозитории с большим количеством пакетов. Синтаксис для установки любого из них прост: install.packages(“Name_Of_R_Package”).

    Вот несколько пакетов, без которых вы вряд ли обойдетесь, как специалист по анализу данных: dplyr, ggplot2, reshape2. Безусловно, это не полный список. В этой статье мы подробнее остановимся на пакетах, применяемых в машинном обучении.
    Читать дальше →
    • +12
    • 8.6k
    • 5
  • Лучшие пакеты для машинного обучения в R, часть 1

    • Translation
    Один из наиболее частых вопросов, с которыми сталкиваются специалисты по обработке и анализу данных — «Какой язык программирования лучше всего использовать для решения задач, связанных с машинным обучением?» Ответ на этот вопрос всегда приводит к сложному выбору между R, Python и MATLAB. Вообще говоря, никто не может дать объективный ответ, какой же язык программирования лучше. Конечно, язык, который вы выбираете для машинного обучения, зависит от ограничений конкретной задачи и данных, предпочтений самого специалиста и тех методов машинного обучения, которые нужно будет применить. Согласно опросу о любимом инструменте пользователей Kaggle для решения задач анализа данных R предпочитают 543 из 1714.

    Сейчас в CRAN доступен 8341 пакет. Кроме CRAN, есть и другие репозитории с большим количеством пакетов. Синтаксис для установки любого из них прост: install.packages(“Name_Of_R_Package”).

    Вот несколько пакетов, без которых вы вряд ли обойдетесь, как специалист по анализу данных: dplyr, ggplot2, reshape2. Безусловно, это не полный список. В этой статье мы подробнее остановимся на пакетах, применяемых в машинном обучении.
    Читать дальше →
    • +8
    • 14.5k
    • 7
  • Профилирование в R

    • Translation
    В R есть встроенная утилита для профилирования производительности и памяти — Rprof. Наберите в консоли ?Rprof, чтобы узнать о ней больше.

    Профайлер работает так:
    1. запускаете профайлер, вызывая Rprof и передавая имя файла, где будут храниться данные профилирования
    2. вызываете функции R, которые хотите проанализировать
    3. вызываете Rprof(NULL), чтобы остановить профайлер
    4. анализируете файл, созданный Rprof, как правило, с помощью summaryRprof

    Читать дальше →
  • Лучшие пакеты для работы с данными в R, часть 2

    • Translation
    Есть два отличных пакета для работы с данными в R — dplyr и data.table. У каждого пакета свои сильные стороны. dplyr элегантнее и похож на естественный язык, в то время как data.table лаконичный, с его помощью многое можно сделать всего в одну строку. Более того, в некоторых случаях data.table быстрее (сравнительный анализ доступен здесь), и это может определить выбор, если есть ограничения по памяти или производительности. Сравнение dplyr и data.table можно также почитать на Stack Overflow и Quora.

    Здесь можно найти руководство и краткое описание data.table, а здесь — для dplyr. Также можно почитать обучающие материалы по dplyr на DataScience+.

    В первой части: начало работы с данными, выбор, удаление и переименование столбцов.
    Читать дальше →
  • Лучшие пакеты для работы с данными в R, часть 1

    • Translation
    Есть два отличных пакета для работы с данными в R — dplyr и data.table. У каждого пакета свои сильные стороны. dplyr элегантнее и похож на естественный язык, в то время как data.table лаконичный, с его помощью многое можно сделать всего в одну строку. Более того, в некоторых случаях data.table быстрее (сравнительный анализ доступен здесь), и это может определить выбор, если есть ограничения по памяти или производительности. Сравнение dplyr и data.table можно также почитать на Stack Overflow и Quora.

    Здесь можно найти руководство и краткое описание data.table, а здесь — для dplyr. Также можно почитать обучающие материалы по dplyr на DataScience+.
    Читать дальше →
  • R: обработка пропущенных значений

    • Translation
    Пропущенные значения в данных — обычное в реальных задачах явление. Нужно знать, как эффективно работать с ними, если цель — уменьшить погрешность и построить точную модель. Давайте рассмотрим разные варианты обработки пропущенных значений и их реализацию.
    Читать дальше →
    • +13
    • 13.3k
    • 1