Log Transformation
ในแบบฝึกหัดก่อนหน้า เราปรับสเกลข้อมูลแบบเชิงเส้น ซึ่งไม่ส่งผลต่อรูปร่างของการกระจายข้อมูล วิธีนี้เหมาะมากหากข้อมูลมีการกระจายแบบปกติ (หรือใกล้เคียงปกติ) ซึ่งเป็นข้อสมมติที่โมเดล machine learning จำนวนมากใช้ บางครั้งข้อมูลก็สอดคล้องกับการกระจายแบบปกติได้ดี เช่น ส่วนสูงหรือน้ำหนักของประชากร แต่ในทางกลับกัน ตัวแปรหลายอย่างในโลกจริงไม่เป็นไปตามรูปแบบนี้ เช่น รายได้หรืออายุของประชากร ในแบบฝึกหัดนี้ จะใช้ log transform กับคอลัมน์ ConvertedSalary ใน DataFrame so_numeric_df เนื่องจากข้อมูลส่วนใหญ่กระจุกตัวอยู่ที่ค่าต่ำ แต่ก็มีค่าที่สูงมากปรากฏอยู่ด้วย การกระจายลักษณะนี้เรียกว่ามี long right tail
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Feature Engineering สำหรับ Machine Learning ใน Python
คำแนะนำการฝึกหัด
- Import
PowerTransformerจากโมดูลpreprocessingของsklearn - สร้าง instance ของ
PowerTransformer()และกำหนดให้กับตัวแปรpow_trans - Fit
PowerTransformerกับคอลัมน์ConvertedSalaryในso_numeric_df - Transform คอลัมน์เดิมด้วย scaler ที่ fit ไว้แล้ว
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Import PowerTransformer
from sklearn.preprocessing import ____
# Instantiate PowerTransformer
pow_trans = ____
# Train the transform on the data
____
# Apply the power transform to the data
so_numeric_df['ConvertedSalary_LG'] = ____(so_numeric_df[['ConvertedSalary']])
# Plot the data before and after the transformation
so_numeric_df[['ConvertedSalary', 'ConvertedSalary_LG']].hist()
plt.show()