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

One Hot Encoding

ในสหรัฐอเมริกา ที่อยู่อาศัยเป็นตัวกำหนดว่าบุตรหลานจะสามารถเข้าเรียนที่โรงเรียนใดได้บ้าง จึงไม่แปลกที่หลายคนจะให้ความสำคัญกับเขตการศึกษาของบ้านที่กำลังจะซื้อ แม้ว่าเขตการศึกษาจะแสดงเป็นตัวเลขใน SCHOOLDISTRICTNUMBER แต่ในความเป็นจริงแล้วคอลัมน์นี้เป็นข้อมูลเชิงหมวดหมู่ การนำค่าเหล่านี้มาบวกหรือหาค่าเฉลี่ยจึงไม่มีความหมายใดๆ ดังนั้นในแบบฝึกหัดนี้ เราจะแปลง SCHOOLDISTRICTNUMBER จากตัวแปรเชิงหมวดหมู่ให้เป็นเวกเตอร์เชิงตัวเลข เพื่อนำไปใช้กับโมเดล machine learning ในขั้นตอนต่อไป

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Feature Engineering with PySpark

ดูคอร์ส

คำแนะนำการฝึกหัด

  • สร้าง StringIndexer transformer ชื่อ string_indexer โดยกำหนดให้ SCHOOLDISTRICTNUMBER เป็น input และ School_Index เป็น output
  • นำ transformer string_indexer ไปใช้กับ df โดยเรียก fit() และ transform() แล้วเก็บ dataframe ที่แปลงแล้วไว้ในตัวแปร indexed_df
  • สร้าง OneHotEncoder transformer ชื่อ encoder โดยใช้ School_Index เป็น input และ School_Vec เป็น output
  • นำการแปลงไปใช้กับ indexed_df โดยเรียก transform() จากนั้นตรวจสอบผลลัพธ์ในแต่ละขั้นตอนด้วยโค้ดที่เตรียมไว้ให้

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

from pyspark.ml.feature import OneHotEncoder, StringIndexer

# Map strings to numbers with string indexer
string_indexer = ____(inputCol=____, outputCol=____)
indexed_df = ____.____(df).____(df)

# Onehot encode indexed values
encoder = ____(inputCol=____, outputCol=____)
encoded_df = ____.____(indexed_df)

# Inspect the transformation steps
encoded_df[['SCHOOLDISTRICTNUMBER', 'School_Index', 'School_Vec']].show(truncate=100)
แก้ไขและรันโค้ด