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.
To ćwiczenie jest częścią kursu
Wprowadzenie do Spark z pakietem sparklyr w R
Instrukcje do ćwiczenia
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
hotttnesssna podstawietrack_metadata_tbl.- Wybierz pole
artist_hotttnesss. - Użyj
ft_binarizer(), aby utworzyć nowe poleis_hottt_or_nottt, które przyjmuje wartość true, gdyartist_hotttnesssjest większe od 0,5. - Zbierz wynik za pomocą
collect(). - Przekonwertuj pole
is_hottt_or_notttna typ logiczny.
- Wybierz pole
- Narysuj wykres słupkowy
ggplot()dlais_hottt_or_nottt.- Pierwszym argumentem
ggplot()jest argument danych:hotttnesss. - Drugim argumentem
ggplot()jest estetyka –is_hottt_or_notttopakowane waes(). - Dodaj
geom_bar(), aby narysować słupki.
- Pierwszym argumentem
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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(___)) +
___()