1. Nauka
  2. /
  3. Kursy
  4. /
  5. Wprowadzenie do Spark z pakietem sparklyr w R

Connected

ćwiczenie

Przekształcanie zmiennych ciągłych na logiczne

Zmienne logiczne są wygodne, bo często łatwiej myśleć w kategoriach „tak albo nie" niż w kategoriach liczbowych. Jeśli ktoś zapyta cię: „Napijesz się herbaty?", odpowiedź tak lub nie jest bardziej naturalna niż „Prawdopodobieństwo, że mam ochotę na herbatę, wynosi 0,73". Takie podejście ma też realne zastosowania w data science. Na przykład test na cukrzycę może zwrócić stężenie glukozy w osoczu krwi pacjenta jako liczbę. W rzeczywistości interesuje nas jednak odpowiedź na pytanie: „Czy pacjent ma cukrzycę?" – dlatego trzeba przekształcić tę liczbę w wartość logiczną na podstawie określonego progu.

W bazowym R robi się to dość prosto, na przykład tak:

threshold_mmol_per_l <- 7
has_diabetes <- plasma_glucose_concentration > threshold_mmol_per_l

Wszystkie funkcje transformacji cech w sparklyr mają podobny interfejs. Pierwsze trzy argumenty to zawsze: tibble Spark, ciąg znaków z nazwą kolumny wejściowej oraz ciąg znaków z nazwą kolumny wyjściowej. Innymi słowy, stosują one następujący wzorzec:

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

W sparklyr przekształcenie zmiennej ciągłej na logiczną odbywa się za pomocą ft_binarizer(). Poprzedni przykład z cukrzycą można zapisać w następujący sposób. Pamiętaj, że wartość progu powinna być liczbą, a nie ciągiem znaków odnoszącym się do kolumny w zbiorze danych.

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

Zgodnie z filozofią Spark, która zakłada używanie DoubleType wszędzie, wynik ft_binarizer() nie jest tak naprawdę wartością logiczną – jest numeric. To właściwe podejście, gdy chcesz dalej pracować w Spark i wykonywać kolejne transformacje. Jeśli jednak chcesz przetwarzać dane w R, musisz pamiętać o jawnym przekonwertowaniu danych na typ logiczny. Poniżej widoczny jest często stosowany wzorzec kodu:

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

To ćwiczenie dotyczy osobliwie nazwanego pola artist_hotttnesss, które mierzy popularność artysty w mediach w chwili tworzenia zbioru danych. Jeśli chcesz dowiedzieć się więcej o rysowaniu wykresów za pomocą pakietu ggplot2, zapoznaj się z kursem Introduction to Data Visualization with ggplot2.

Instrukcje

100 XP

Połączenie ze Spark zostało już utworzone jako spark_conn. Tibble powiązany z metadanymi utworów przechowywanymi w Spark jest predefiniowany jako track_metadata_tbl.

  • Utwórz zmienną o nazwie hotttnesss na podstawie track_metadata_tbl.
    • Wybierz pole artist_hotttnesss.
    • Użyj ft_binarizer(), aby utworzyć nowe pole is_hottt_or_nottt, które przyjmuje wartość true, gdy artist_hotttnesss jest większe od 0,5.
    • Zbierz wynik za pomocą collect().
    • Przekonwertuj pole is_hottt_or_nottt na typ logiczny.
  • Narysuj wykres słupkowy ggplot() dla is_hottt_or_nottt.
    • Pierwszym argumentem ggplot() jest argument danych: hotttnesss.
    • Drugim argumentem ggplot() jest estetyka – is_hottt_or_nottt opakowane w aes().
    • Dodaj geom_bar(), aby narysować słupki.