開始使用免費開始

分箱(Bucketing)

如果你是屋主,房子有 1、2、3 還是 4 間臥室會很重要。不過就像浴室一樣,超過某個數量之後,你其實不在乎房子是 7 間還是 8 間。這個範例要帶你找出適合用來分箱的關鍵數值點。

本練習屬於課程

使用 PySpark 進行特徵工程

檢視課程

練習說明

  • 使用 Seaborndistplot(),對 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']].____()
編輯並執行程式碼