Regroupement en intervalles (Bucketing)
Si vous êtes propriétaire, il est très important de savoir si une maison a 1, 2, 3 ou 4 chambres. Mais, comme pour les salles de bain, au‑delà d’un certain seuil, vous ne faites plus vraiment la différence entre 7 et 8. Dans cet exemple, nous allons voir comment repérer de bons points de coupure pour créer des intervalles (buckets).
Cet exercice fait partie du cours
<cours>Feature Engineering avec PySpark</cours>Instructions de l’exercice
- Tracez une courbe de distribution du dataframe
pandassample_dfavecSeaborndistplot(). - Étant donné qu’il semble y avoir une longue traîne de valeurs peu fréquentes après 5, créez des
splitspour les buckets à 1, 2, 3, 4, 5+. - Créez le transformeur
bucken instanciantBucketizer()avec les splits pour définir les intervalles, puis définissez la colonne d’entrée commeBEDROOMSet la colonne de sortie commebedrooms. - Appliquez la transformation Bucketizer sur
dfavectransform()et assignez le résultat àdf_bucket. Vérifiez ensuite les résultats avecshow().
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
from pyspark.ml.feature import Bucketizer
# Plot distribution of sample_df
sns.____(____, axlabel='BEDROOMS')
plt.show()
# Create the bucket splits and bucketizer
splits = [____, ____, ____, ____, ____, ____, float('Inf')]
buck = ____(splits=____, inputCol=____, outputCol=____)
# Apply the transformation to df: df_bucket
df_bucket = ____.____(____)
# Display results
df_bucket[['BEDROOMS', 'bedrooms']].____()