Inizia subitoInizia gratis

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

Visualizza corso

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 hotttnesss da track_metadata_tbl.
    • Seleziona il campo artist_hotttnesss.
    • Usa ft_binarizer() per creare un nuovo campo, is_hottt_or_nottt, che è vero quando artist_hotttnesss è maggiore di 0,5.
    • Esegui la raccolta del risultato.
    • Converte il campo is_hottt_or_nottt in logico.
  • Disegna un grafico a barre con ggplot() di is_hottt_or_nottt.
    • Il primo argomento di ggplot() è l'argomento dei dati, hotttnesss.
    • Il secondo argomento di ggplot() è l'estetica, is_hottt_or_nottt racchiuso in aes().
    • Aggiungi geom_bar() per disegnare le barre.

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(___)) +
  ___()
Modifica ed esegui il codice