Stetige Variablen in logisch umwandeln
Logische Variablen sind praktisch, weil es oft leichter ist, in „ja oder nein“-Kategorien zu denken als in Zahlen. Wenn dich jemand zum Beispiel fragt: „Möchtest du eine Tasse Tee?“, ist eine Ja- oder Nein-Antwort hilfreicher als „Es gibt eine 0,73-Wahrscheinlichkeit, dass ich eine Tasse Tee möchte“. Das hat auch in der Data Science echte Anwendung. Ein Test auf Diabetes liefert zum Beispiel die Glukosekonzentration im Blutplasma eines Patienten als Zahl. Eigentlich interessiert dich aber: „Hat der Patient Diabetes?“. Also musst du die Zahl auf Basis eines Schwellenwerts in einen logischen Wert umwandeln.
In Base R geht das recht einfach, etwa so:
threshold_mmol_per_l <- 7
has_diabetes <- plasma_glucose_concentration > threshold_mmol_per_l
Alle sparklyr-Funktionen zur Feature-Transformation haben eine ähnliche Benutzeroberfläche. Die ersten drei Argumente sind immer ein Spark-Tibble, ein String mit dem Namen der Eingabespalte und ein String mit dem Namen der Ausgabespalte. Sie folgen also diesem Muster.
a_tibble %>%
ft_some_transformation("x", "y", some_other_args)
Die sparklyr-Variante, eine stetige Variable in logisch zu konvertieren, verwendet ft_binarizer(). Das vorherige Diabetes-Beispiel lässt sich so umschreiben. Beachte, dass der Schwellenwert eine Zahl sein sollte und kein String, der sich auf eine Spalte im Datensatz bezieht.
diabetes_data %>%
ft_binarizer("plasma_glucose_concentration", "has_diabetes", threshold = threshold_mmol_per_l)
Im Sinne der Spark-Philosophie, überall DoubleType zu verwenden, ist die Ausgabe von ft_binarizer() nicht wirklich logisch, sondern numeric. Das ist richtig, wenn du in Spark weiterarbeiten und weitere Transformationen durchführen willst. Wenn du die Daten jedoch in R weiterverarbeiten möchtest, musst du daran denken, die Daten explizit in logisch zu konvertieren. Das folgende Muster ist üblich.
a_tibble %>%
ft_binarizer("x", "is_x_big", threshold = threshold) %>%
collect() %>%
mutate(is_x_big = as.logical(is_x_big))
In dieser Übung geht es um das, nun ja, unglücklich benannte Feld artist_hotttnesss, das misst, wie viel Medienrummel ein Artist zum Zeitpunkt der Datensatz-Erstellung hatte. Wenn du mehr über das Zeichnen von Plots mit dem Paket ggplot2 lernen möchtest, schau dir den Kurs Introduction to Data Visualization with ggplot2 an.
Diese Übung ist Teil des Kurses
Einführung in Spark mit sparklyr in R
Anleitung zur Übung
Es wurde bereits eine Spark-Verbindung als spark_conn erstellt. Ein an die in Spark gespeicherten Track-Metadaten angebundenes Tibble ist als track_metadata_tbl vordefiniert.
- Erstelle eine Variable namens
hotttnesssaustrack_metadata_tbl.- Wähle das Feld
artist_hotttnesssaus. - Verwende
ft_binarizer(), um ein neues Feldis_hottt_or_notttzu erstellen, das true ist, wennartist_hotttnesssgrößer als 0,5 ist. - Sammle das Ergebnis ein.
- Konvertiere das Feld
is_hottt_or_notttin logisch.
- Wähle das Feld
- Zeichne einen
ggplot()-Balkenplot vonis_hottt_or_nottt.- Das erste Argument von
ggplot()ist das Datenargument,hotttnesss. - Das zweite Argument von
ggplot()ist das Ästhetik-Mapping,is_hottt_or_notttinaes()eingeschlossen. - Füge
geom_bar()hinzu, um die Balken zu zeichnen.
- Das erste Argument von
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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(___)) +
___()