Trasformare variabili continue in logiche
Le variabili logiche sono comode perché spesso è più semplice ragionare in termini di "sì o no" piuttosto che con numeri. Per esempio, se qualcuno ti chiede "Vuoi una tazza di tè?", una risposta sì/no è preferibile a "C'è una probabilità di 0,73 che io voglia una tazza di tè". Questo ha applicazioni concrete anche nella data science. Per esempio, un test per il diabete può restituire la concentrazione di glucosio nel plasma sanguigno del paziente come numero. Quello che davvero ti interessa è: "Il paziente ha il diabete?", quindi devi convertire il numero in un valore logico, in base a una certa soglia.
In base R, si fa in modo piuttosto semplice, ad esempio così:
threshold_mmol_per_l <- 7
has_diabetes <- plasma_glucose_concentration > threshold_mmol_per_l
Tutte le funzioni di trasformazione delle feature di sparklyr hanno un'interfaccia utente simile. I primi tre argomenti sono sempre una tibble di Spark, una stringa con il nome della colonna di input e una stringa con il nome della colonna di output. Cioè, seguono questo schema.
a_tibble %>%
ft_some_transformation("x", "y", some_other_args)
Il modo sparklyr per convertire una variabile continua in logica usa ft_binarizer(). Il precedente esempio sul diabete può essere riscritto così. Nota che il valore di soglia deve essere un numero, non una stringa che fa riferimento a una colonna dell'insieme di dati.
diabetes_data %>%
ft_binarizer("plasma_glucose_concentration", "has_diabetes", threshold = threshold_mmol_per_l)
In linea con la filosofia di Spark di usare DoubleType ovunque, l'output di ft_binarizer() in realtà non è logico; è numeric. Questo è l'approccio corretto per permetterti di continuare a lavorare in Spark ed eseguire altre trasformazioni, ma se vuoi elaborare i tuoi dati in R, ricorda di convertire esplicitamente i dati in logici. Il seguente è un pattern di codice comune.
a_tibble %>%
ft_binarizer("x", "is_x_big", threshold = threshold) %>%
collect() %>%
mutate(is_x_big = as.logical(is_x_big))
Questo esercizio considera l'infelicemente chiamato campo artist_hotttnesss, che fornisce una misura di quanto l'artista fosse al centro dell'attenzione mediatica al momento della creazione dell'insieme di dati. Se vuoi approfondire come creare grafici con il pacchetto ggplot2, dai un'occhiata al corso Introduction to Data Visualization with ggplot2.
Questo esercizio fa parte del corso
Introduzione a Spark con sparklyr in R
Istruzioni dell'esercizio
Una connessione Spark è già stata creata per te come spark_conn. Una tibble collegata ai metadati delle tracce archiviati in Spark è stata predefinita come track_metadata_tbl.
- Crea una variabile chiamata
hotttnesssdatrack_metadata_tbl.- Seleziona il campo
artist_hotttnesss. - Usa
ft_binarizer()per creare un nuovo campo,is_hottt_or_nottt, che è vero quandoartist_hotttnesssè maggiore di 0,5. - Esegui la raccolta del risultato.
- Converte il campo
is_hottt_or_notttin logico.
- Seleziona il campo
- Disegna un grafico a barre con
ggplot()diis_hottt_or_nottt.- Il primo argomento di
ggplot()è l'argomento dei dati,hotttnesss. - Il secondo argomento di
ggplot()è l'estetica,is_hottt_or_notttracchiuso inaes(). - Aggiungi
geom_bar()per disegnare le barre.
- Il primo argomento di
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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(___)) +
___()