起飛時間分箱(Bucketing)
一天中的時間對迴歸模型是一項挑戰,同時也非常適合做分箱處理。
在本練習中,你會把航班的起飛時間,從介於 0(對應 00:00)到 24(對應 24:00)的數值,轉換成分箱後的值。接著再對這些分箱值做 one-hot 編碼。
本練習屬於課程
使用 PySpark 的機器學習
練習說明
- 建立一個 bucketizer 物件,分箱邊界設為 0、3、6、…、24,分別對應 0:00、03:00、06:00、…、24:00。將輸入欄位指定為
depart,輸出欄位指定為depart_bucket。 - 對
flights資料中的起飛時間進行分箱。顯示depart與depart_bucket的前 5 筆值。 - 建立一個 one-hot 編碼器物件,將
depart_bucket指定為輸入欄位,depart_dummy指定為輸出欄位。 - 對分箱後的資料擬合該編碼器,然後用它將資料轉換為虛擬變數。顯示
depart、depart_bucket與depart_dummy的前 5 筆值。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
from pyspark.ml.feature import Bucketizer, OneHotEncoder
# Create buckets at 3 hour intervals through the day
buckets = ____(splits=[____], inputCol='____', outputCol='____')
# Bucket the departure times
bucketed = buckets.____(____)
bucketed.____('____', '____').____(____)
# Create a one-hot encoder
onehot = ____(inputCols=['____'], outputCols=['____'])
# One-hot encode the bucketed departure times
flights_onehot = ____.____(____).____(____)
flights_onehot.____('____', '____', '____').____(____)