การทำ Bucketing เวลาออกเดินทาง
ข้อมูลเวลาในแต่ละวันเป็นความท้าทายสำหรับโมเดล Regression และยังเหมาะอย่างยิ่งสำหรับการทำ Bucketing
ในบทเรียนนี้ จะแปลงเวลาออกเดินทางของเที่ยวบินจากค่าตัวเลขระหว่าง 0 (ตรงกับ 00:00) ถึง 24 (ตรงกับ 24:00) ให้เป็นค่าที่แบ่งเป็น Bin แล้วนำค่าเหล่านั้นไปทำ One-Hot Encoding ต่อไป
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Machine Learning with PySpark
คำแนะนำการฝึกหัด
- สร้างออบเจกต์ Bucketizer โดยกำหนดขอบเขตของ Bin ที่ 0, 3, 6, …, 24 ซึ่งตรงกับเวลา 0:00, 03:00, 06:00, …, 24:00 พร้อมระบุคอลัมน์อินพุตเป็น
departและคอลัมน์เอาต์พุตเป็นdepart_bucket - แบ่ง Bucket เวลาออกเดินทางในข้อมูล
flightsแล้วแสดงค่า 5 แถวแรกของdepartและdepart_bucket - สร้างออบเจกต์ One-Hot Encoder โดยระบุ
depart_bucketเป็นคอลัมน์อินพุต และdepart_dummyเป็นคอลัมน์เอาต์พุต - Fit Encoder กับข้อมูลที่แบ่ง Bucket แล้ว จากนั้นใช้ Transform ข้อมูลให้เป็น Dummy Variables แล้วแสดงค่า 5 แถวแรกของ
depart,depart_bucketและdepart_dummy
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
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.____('____', '____', '____').____(____)