CommencerCommencez gratuitement

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>
Voir le cours

Instructions de l’exercice

  • Tracez une courbe de distribution du dataframe pandas sample_df avec Seaborn distplot().
  • Étant donné qu’il semble y avoir une longue traîne de valeurs peu fréquentes après 5, créez des splits pour les buckets à 1, 2, 3, 4, 5+.
  • Créez le transformeur buck en instanciant Bucketizer() avec les splits pour définir les intervalles, puis définissez la colonne d’entrée comme BEDROOMS et la colonne de sortie comme bedrooms.
  • Appliquez la transformation Bucketizer sur df avec transform() et assignez le résultat à df_bucket. Vérifiez ensuite les résultats avec show().

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']].____()
Modifier et exécuter le code