Continue variabelen omzetten naar logisch
Logische variabelen zijn prettig, omdat het vaak makkelijker is om in termen van “ja of nee” te denken dan in getallen. Als iemand je bijvoorbeeld vraagt: “Wil je een kop thee?”, dan is een ja-of-nee-antwoord handiger dan: “De kans dat ik thee wil is 0,73.” Dit heeft ook echte data science-toepassingen. Een test op diabetes kan bijvoorbeeld de glucoseconcentratie in iemands bloedplasma als getal teruggeven. Waar het je écht om gaat is: “Heeft de patiënt diabetes?” Dus moet je dat getal omzetten naar een logische waarde op basis van een drempelwaarde.
In base R kan dat vrij eenvoudig, met zoiets als:
threshold_mmol_per_l <- 7
has_diabetes <- plasma_glucose_concentration > threshold_mmol_per_l
Alle sparklyr-functies voor featuretransformatie hebben een vergelijkbare interface. De eerste drie argumenten zijn altijd een Spark-tibble, een string met de naam van de inputkolom en een string met de naam van de outputkolom. Ze volgen dus dit patroon.
a_tibble %>%
ft_some_transformation("x", "y", some_other_args)
De sparklyr-manier om een continue variabele om te zetten naar logisch gebruikt ft_binarizer(). Het eerdere diabetesvoorbeeld kun je zo herschrijven. Let op: de drempelwaarde moet een getal zijn, geen string die verwijst naar een kolom in de gegevensset.
diabetes_data %>%
ft_binarizer("plasma_glucose_concentration", "has_diabetes", threshold = threshold_mmol_per_l)
In lijn met de Spark-filosofie om overal DoubleType te gebruiken, is de output van ft_binarizer() niet echt logisch; het is numeric. Dat is handig als je in Spark wilt blijven werken en verdere transformaties wilt doen, maar als je de data in R wilt verwerken, moet je er aan denken de data expliciet om te zetten naar logisch. Het volgende is een veelgebruikt codepatroon.
a_tibble %>%
ft_binarizer("x", "is_x_big", threshold = threshold) %>%
collect() %>%
mutate(is_x_big = as.logical(is_x_big))
In deze oefening ga je aan de slag met het, eh, rampzalig benoemde veld artist_hotttnesss, dat aangeeft hoeveel media-aandacht een artiest had toen de gegevensset werd gemaakt. Wil je meer leren over grafieken maken met het pakket ggplot2? Volg dan de cursus Introduction to Data Visualization with ggplot2.
Deze oefening maakt deel uit van de cursus
Introductie tot Spark met sparklyr in R
Oefeninstructies
Er is al een Spark-verbinding voor je aangemaakt als spark_conn. Een tibble met de trackmetadata die in Spark is opgeslagen is vooraf gedefinieerd als track_metadata_tbl.
- Maak een variabele
hotttnesssop basis vantrack_metadata_tbl.- Selecteer het veld
artist_hotttnesss. - Gebruik
ft_binarizer()om een nieuw veldis_hottt_or_notttte maken, dat true is wanneerartist_hotttnesssgroter is dan 0.5. - Haal het resultaat op met
collect(). - Zet het veld
is_hottt_or_notttom naar logisch.
- Selecteer het veld
- Teken een
ggplot()-staafdiagram vanis_hottt_or_nottt.- Het eerste argument van
ggplot()is het data-argument,hotttnesss. - Het tweede argument van
ggplot()is de esthetiek,is_hottt_or_notttverpakt inaes(). - Voeg
geom_bar()toe om de balken te tekenen.
- Het eerste argument van
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# 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(___)) +
___()