НачатьНачать бесплатно

Преобразование непрерывных переменных в логические

Логические переменные удобны тем, что зачастую проще мыслить категориями «да или нет», а не числами. Например, если вас спрашивают «Хотите чашку чая?», ответ «да» или «нет» куда понятнее, чем «вероятность того, что я хочу чай, составляет 0,73». Это применимо и в реальных задачах анализа данных. Например, тест на диабет может вернуть числовое значение концентрации глюкозы в плазме крови пациента. Однако вас интересует другое: «Есть ли у пациента диабет?» — а значит, нужно преобразовать это число в логическое значение на основе некоторого порога.

В базовом R это делается достаточно просто:

threshold_mmol_per_l <- 7
has_diabetes <- plasma_glucose_concentration > threshold_mmol_per_l

Все функции преобразования признаков в sparklyr имеют схожий интерфейс. Первые три аргумента — всегда Spark-тиббл, строка с именем входного столбца и строка с именем выходного столбца. То есть они следуют такому шаблону:

a_tibble %>%
  ft_some_transformation("x", "y", some_other_args)

Для преобразования непрерывной переменной в логическую в sparklyr используется функция ft_binarizer(). Предыдущий пример с диабетом можно переписать следующим образом. Обратите внимание: значение порога должно быть числом, а не строкой с названием столбца набора данных.

diabetes_data %>%
  ft_binarizer("plasma_glucose_concentration", "has_diabetes", threshold = threshold_mmol_per_l)

В соответствии с философией Spark, где повсеместно используется тип DoubleType, результат ft_binarizer() на самом деле не является логическим — он имеет тип numeric. Это правильный подход, если вы продолжаете работать в Spark и выполняете дальнейшие преобразования. Однако если вы хотите обработать данные в R, не забудьте явно привести их к логическому типу. Типичный шаблон кода выглядит так:

a_tibble %>%
  ft_binarizer("x", "is_x_big", threshold = threshold) %>%
  collect() %>%
  mutate(is_x_big = as.logical(is_x_big))

В этом упражнении рассматривается поле с говорящим названием artist_hotttnesss — оно отражает степень медийной популярности исполнителя на момент создания набора данных. Если вы хотите подробнее изучить построение графиков с помощью пакета ggplot2, пройдите курс Introduction to Data Visualization with ggplot2.

Это упражнение является частью курса

Введение в Spark с sparklyr на R

Посмотреть курс

Инструкции к упражнению

Подключение к Spark уже создано и доступно как spark_conn. Тиббл, привязанный к метаданным треков в Spark, предопределён как track_metadata_tbl.

  • Создайте переменную hotttnesss на основе track_metadata_tbl.
    • Выберите поле artist_hotttnesss.
    • С помощью ft_binarizer() создайте новое поле is_hottt_or_nottt, которое принимает значение true, когда artist_hotttnesss больше 0,5.
    • Соберите результат.
    • Преобразуйте поле is_hottt_or_nottt к логическому типу.
  • Постройте столбчатую диаграмму ggplot() для is_hottt_or_nottt.
    • Первый аргумент ggplot() — данные, hotttnesss.
    • Второй аргумент ggplot() — эстетика: is_hottt_or_nottt, обёрнутое в aes().
    • Добавьте geom_bar() для отрисовки столбцов.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# track_metadata_tbl has been pre-defined
track_metadata_tbl

hotttnesss <- track_metadata_tbl %>%
  # Select artist_hotttnesss
  ___ %>%
  # Binarize to is_hottt_or_nottt
  ___ %>%
  # Collect the result
  ___ %>%
  # Convert is_hottt_or_nottt to logical
  ___

# Draw a barplot of is_hottt_or_nottt
ggplot(___, aes(___)) +
  ___()
Редактировать и запускать код