分箱(Bucketing)
如果你是屋主,房子有 1、2、3 還是 4 間臥室會很重要。不過就像浴室一樣,超過某個數量之後,你其實不在乎房子是 7 間還是 8 間。這個範例要帶你找出適合用來分箱的關鍵數值點。
本練習屬於課程
使用 PySpark 進行特徵工程
練習說明
- 使用
Seaborn的distplot(),對pandas的資料框sample_df繪製分佈圖。 - 觀察起來在 5 之後有一段長尾、出現頻率很低的數值,因此請建立 1、2、3、4、5+ 的分箱
splits。 - 以這些 splits 來設定分箱,建立轉換器
buck(以Bucketizer()產生),並將輸入欄位設為BEDROOMS、輸出欄位設為bedrooms。 - 對
df呼叫transform()套用 Bucketizer 轉換,並將結果指定為df_bucket。接著用show()檢查結果。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
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']].____()