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.
Cette activité fait partie du cours
Introduction à Spark avec sparklyr en R
Instructions de l’exercice
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 detrack_metadata_tbl.- Sélectionnez le champ
artist_hotttnesss. - Utilisez
ft_binarizer()pour créer un nouveau champ,is_hottt_or_nottt, qui est vrai lorsqueartist_hotttnesssest supérieur à 0.5. - Rapatriez le résultat avec
collect(). - Convertissez le champ
is_hottt_or_nottten valeur logique.
- Sélectionnez le champ
- Tracez un diagramme à 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_notttenveloppé dansaes(). - Ajoutez
geom_bar()pour dessiner les barres.
- Le premier argument de
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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(___)) +
___()