1. Apprendre
  2. /
  3. Cours
  4. /
  5. Introduction à Spark avec sparklyr en R

Connected

Exercice

Transformer des variables continues en variables logiques

Les variables logiques sont utiles, car il est souvent plus simple de raisonner en termes de « oui ou non » plutôt qu'avec des valeurs numériques. Par exemple, si quelqu'un vous demande « Voulez-vous une tasse de thé ? », une réponse oui ou non est préférable à « J'ai une probabilité de 0,73 de vouloir une tasse de thé ». C'est aussi très pertinent en science des données. Par exemple, un test de diabète peut retourner la concentration de glucose dans le plasma sanguin d'un patient sous forme numérique. Ce qui vous intéresse vraiment, c'est « La personne est-elle diabétique ? ». Il faut donc convertir ce nombre en valeur logique selon un certain seuil.

En R de base, c'est assez simple, avec quelque chose comme ceci :

threshold_mmol_per_l <- 7
has_diabetes <- plasma_glucose_concentration > threshold_mmol_per_l

Toutes les fonctions de transformation de caractéristiques de sparklyr présentent une interface semblable. Les trois premiers arguments sont toujours un tibble Spark, une chaîne qui nomme la colonne d'entrée et une chaîne qui nomme la colonne de sortie. Elles suivent donc ce modèle.

a_tibble %>%
  ft_some_transformation("x", "y", some_other_args)

La façon sparklyr de convertir une variable continue en logique utilise ft_binarizer(). L'exemple du diabète précédent peut être réécrit comme suit. Notez que la valeur du seuil doit être un nombre, et non une chaîne qui fait référence à une colonne de l'ensemble de données.

diabetes_data %>%
  ft_binarizer("plasma_glucose_concentration", "has_diabetes", threshold = threshold_mmol_per_l)

Conformément à la philosophie de Spark d'utiliser DoubleType partout, la sortie de ft_binarizer() n'est pas vraiment logique ; elle est de type numeric. C'est ce qu'il faut pour continuer à travailler dans Spark et effectuer d'autres transformations, mais si vous souhaitez traiter vos données dans R, n'oubliez pas de convertir explicitement en logique. Le patron de code suivant est courant.

a_tibble %>%
  ft_binarizer("x", "is_x_big", threshold = threshold) %>%
  collect() %>%
  mutate(is_x_big = as.logical(is_x_big))

Cet exercice porte sur le champ au nom peu heureux artist_hotttnesss, qui mesure l'écho médiatique de l'artiste au moment de la création de l'ensemble de données. Si vous souhaitez en savoir plus sur la création de graphiques avec le paquet ggplot2, nous vous invitons à suivre le cours Introduction to Data Visualization with ggplot2.

Instructions

100 XP

Une connexion Spark a été créée pour vous sous le nom spark_conn. Un tibble lié aux métadonnées des pistes stockées dans Spark a été pré‑défini comme track_metadata_tbl.

  • Créez une variable nommée hotttnesss à partir de track_metadata_tbl.
    • Sélectionnez le champ artist_hotttnesss.
    • Utilisez ft_binarizer() pour créer un nouveau champ, is_hottt_or_nottt, qui est vrai lorsque artist_hotttnesss est supérieur à 0.5.
    • Rapatriez le résultat avec collect().
    • Convertissez le champ is_hottt_or_nottt en valeur logique.
  • Tracez un diagramme à barres ggplot() de is_hottt_or_nottt.
    • Le premier argument de ggplot() est l'argument des données, hotttnesss.
    • Le deuxième argument de ggplot() est l'esthétique, is_hottt_or_nottt enveloppé dans aes().
    • Ajoutez geom_bar() pour dessiner les barres.