การแบ่ง Bucket
สำหรับผู้ซื้อบ้าน จำนวนห้องนอน 1, 2, 3 หรือ 4 ห้องถือเป็นข้อมูลสำคัญมาก แต่เช่นเดียวกับห้องน้ำ เมื่อจำนวนห้องนอนเกินระดับหนึ่ง การมี 7 หรือ 8 ห้องก็แทบไม่ต่างกันในแง่การตัดสินใจ ในแบบฝึกหัดนี้จะมาดูวิธีหาจุดที่เหมาะสมสำหรับการแบ่ง bucket
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Feature Engineering with PySpark
คำแนะนำการฝึกหัด
- พล็อตกราฟการกระจายของ dataframe
sample_dfในpandasโดยใช้distplot()ของSeaborn - เมื่อเห็นว่ามีค่าที่พบน้อยครั้งยาวออกไปหลังจาก 5 ให้สร้าง
splitsเพื่อแบ่ง bucket เป็น 1, 2, 3, 4, 5+ - สร้าง transformer ชื่อ
buckโดย instantiateBucketizer()พร้อมกำหนด splits สำหรับการแบ่ง bucket จากนั้นตั้งค่า input column เป็นBEDROOMSและ output column เป็นbedrooms - ใช้การแปลงด้วย Bucketizer กับ
dfผ่านtransform()แล้วกำหนดผลลัพธ์ให้กับ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']].____()