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
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 detrack_metadata_tbl.- Sélectionnez le champ
artist_hotttnesss. - Utilisez
ft_binarizer()pour créer un nouveau champ,is_hottt_or_nottt, qui vaut vrai lorsqueartist_hotttnesssest supérieur à 0,5. - Collectez le résultat.
- Convertissez le champ
is_hottt_or_nottten logique.
- Sélectionnez le champ
- Tracez un diagramme en barres
ggplot()deis_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_notttencapsulé dansaes(). - Ajoutez
geom_bar()pour dessiner les barres.
- Le premier argument de
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(___)) +
___()