Преобразование непрерывных переменных в логические
Логические переменные удобны тем, что зачастую проще мыслить категориями «да или нет», а не числами. Например, если вас спрашивают «Хотите чашку чая?», ответ «да» или «нет» куда понятнее, чем «вероятность того, что я хочу чай, составляет 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(___)) +
___()