การตัดค่าผิดปกติด้วยวิธีทางสถิติ
การตัดข้อมูล N% บนสุดออกนั้นช่วยกำจัดจุดข้อมูลที่ผิดปกติอย่างชัดเจนได้ดี แต่ข้อเสียคือจะตัดข้อมูลออกในสัดส่วนเดิมเสมอ แม้ว่าข้อมูลนั้นจะถูกต้องก็ตาม อีกวิธีที่นิยมใช้คือการตัดข้อมูลที่อยู่ห่างจากค่าเฉลี่ยเกิน 3 ส่วนเบี่ยงเบนมาตรฐาน โดยเริ่มจากคำนวณค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานของคอลัมน์ที่ต้องการ แล้วกำหนดขอบเขตบนและล่าง จากนั้นนำขอบเขตเหล่านี้มาใช้เป็น mask กับ DataFrame วิธีนี้จะตัดเฉพาะข้อมูลที่แตกต่างจากส่วนใหญ่อย่างแท้จริง และจะตัดข้อมูลออกน้อยลงหากข้อมูลกระจุกตัวอยู่ใกล้กัน
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Feature Engineering สำหรับ Machine Learning ใน Python
คำแนะนำการฝึกหัด
- คำนวณส่วนเบี่ยงเบนมาตรฐานและค่าเฉลี่ยของคอลัมน์
ConvertedSalaryในso_numeric_df - คำนวณขอบเขตบนและล่างโดยให้ห่างจากค่าเฉลี่ย 3 ส่วนเบี่ยงเบนมาตรฐานในทั้งสองทิศทาง
- กรอง DataFrame
so_numeric_dfเพื่อเก็บเฉพาะแถวที่ค่าConvertedSalaryอยู่ภายในขอบเขตlowerและupper
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Find the mean and standard dev
std = so_numeric_df['ConvertedSalary'].____
mean = so_numeric_df['ConvertedSalary'].____
# Calculate the cutoff
cut_off = std * 3
lower, upper = mean - cut_off, ____
# Trim the outliers
trimmed_df = so_numeric_df[(so_numeric_df['ConvertedSalary'] < ____) \
& (so_numeric_df['ConvertedSalary'] > ____)]
# The trimmed box plot
trimmed_df[['ConvertedSalary']].boxplot()
plt.show()