CommencerCommencer gratuitement

Transformer des variables continues en booléens

Les variables logiques sont pratiques, car il est souvent plus simple de raisonner en termes « oui ou non » plutôt qu’en valeurs numériques. Par exemple, si l’on vous demande « Voulez-vous une tasse de thé ? », une réponse par oui ou non est préférable à « J’ai 0,73 de probabilité d’avoir envie d’une tasse de thé ». Cela s’applique aussi à la data science. Par exemple, un test du 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 « Le patient est-il diabétique ? ». Il faut donc convertir ce nombre en valeur logique, sur la base d’un seuil.

En R de base, cela se fait assez simplement, avec quelque chose comme :

threshold_mmol_per_l <- 7
has_diabetes <- plasma_glucose_concentration > threshold_mmol_per_l

Toutes les fonctions de transformation de caractéristiques de sparklyr partagent la même interface utilisateur. 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 schéma.

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

La méthode sparklyr pour convertir une variable continue en logique utilise ft_binarizer(). L’exemple du diabète précédent peut être réécrit ainsi. Remarque : la valeur de seuil doit être un nombre, et non une chaîne faisant référence à une colonne du jeu 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 réellement logique ; elle est de type numeric. C’est la bonne approche pour continuer à travailler dans Spark et effectuer d’autres transformations. En revanche, si vous souhaitez traiter vos données dans R, n’oubliez pas de convertir explicitement en logique. Le motif 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 nom, disons, malheureux du champ artist_hotttnesss, qui mesure le buzz médiatique autour de l’artiste à l’époque de la création du jeu de données. Si vous souhaitez en savoir plus sur la création de graphiques avec le package ggplot2, suivez le cours Introduction to Data Visualization with ggplot2.

Cet exercice fait partie du cours

Introduction à Spark avec sparklyr en R

Afficher le cours

Instructions

Une connexion Spark a été créée pour vous sous le nom spark_conn. Un tibble lié aux métadonnées des morceaux stockées dans Spark a été pré-défini sous le nom 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 vaut vrai lorsque artist_hotttnesss est supérieur à 0,5.
    • Collectez le résultat.
    • Convertissez le champ is_hottt_or_nottt en logique.
  • Tracez un diagramme en 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 encapsulé dans aes().
    • Ajoutez geom_bar() pour dessiner les barres.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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(___)) +
  ___()
Modifier et exécuter le code