Bucketizing
Wenn du Hausbesitzer bist, ist es sehr wichtig, ob ein Haus 1, 2, 3 oder 4 Schlafzimmer hat. Aber ähnlich wie bei Badezimmern: Ab einem bestimmten Punkt ist es egal, ob das Haus 7 oder 8 hat. In diesem Beispiel schauen wir uns an, wie man gute Grenzwerte findet, um in Buckets einzuteilen.
Diese Übung ist Teil des Kurses
<Kurs>Feature Engineering mit PySpark</Kurs>Übungsanweisungen
- Zeichne ein Verteilungsdiagramm des
pandas-DataFramessample_dfmitSeaborndistplot(). - Da es so aussieht, als gäbe es nach 5 einen langen Ausreißerbereich seltener Werte, erstelle die Bucket-
splits1, 2, 3, 4, 5+ - Erzeuge den Transformer
buck, indem duBucketizer()mit den Splits zum Festlegen der Buckets instanzierst, setze dann die Eingabespalte aufBEDROOMSund die Ausgabespalte aufbedrooms. - Wende die Bucketizer-Transformation auf
dfmittransform()an und speichere das Ergebnis indf_bucket. Überprüfe anschließend die Ergebnisse mitshow()
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
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']].____()