เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การแบ่ง 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 โดย instantiate Bucketizer() พร้อมกำหนด 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']].____()
แก้ไขและรันโค้ด