การแก้ไขข้อมูลที่เบ้ขวา
ในสไลด์ได้แสดงตัวอย่างการใช้การแปลง log เพื่อแก้ไขข้อมูลที่เบ้บวก (ข้อมูลที่กระจุกตัวอยู่ทางซ้าย) สำหรับการแก้ไขข้อมูลที่เบ้ลบ (ข้อมูลที่กระจุกตัวอยู่ทางขวา) จำเป็นต้องมีขั้นตอนเพิ่มเติมที่เรียกว่า "การสะท้อนค่า" (reflecting) ก่อน จึงจะสามารถใช้ค่าผกผันของ \(\log\) ซึ่งเขียนเป็น (1/\(\log\)) เพื่อปรับให้ข้อมูลมีการกระจายใกล้เคียงการแจกแจงปกติได้ การสะท้อนค่าข้อมูลใช้สูตร \((x_{\text{max}} +1) – x\) เพื่อแปลงแต่ละค่า
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Feature Engineering with PySpark
คำแนะนำการฝึกหัด
- ใช้ฟังก์ชัน aggregate
skewness()เพื่อตรวจสอบว่าคอลัมน์'YEARBUILT'มีค่าเบ้ลบหรือไม่ - ใช้
withColumn()เพื่อสร้างคอลัมน์ใหม่ชื่อ'Reflect_YearBuilt'และสะท้อนค่าของ'YEARBUILT' - นำคอลัมน์
'Reflect_YearBuilt'มาสร้างคอลัมน์'adj_yearbuilt'โดยหาค่า 1/log() ของข้อมูลในคอลัมน์นั้น
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
from pyspark.sql.functions import log
# Compute the skewness
print(df.____({____: ____}).____())
# Calculate the max year
max_year = df.____({____: ____}).____()[0][0]
# Create a new column of reflected data
df = df.____(____, (max_year + 1) - df[____])
# Create a new column based reflected data
df = df.____(____, 1 / ____(df[____]))