การจัดการกับค่าผิดปกติ
ในแบบฝึกหัดนี้ จะได้ฝึกจัดการกับค่าผิดปกติ (outliers) ซึ่งเป็นจุดข้อมูลที่แตกต่างจากข้อมูลส่วนใหญ่อย่างมีนัยสำคัญ จนต้องประมวลผลแยกออกจากข้อมูล "ปกติ" ทั่วไป จะใช้ผลลัพธ์จากแบบฝึกหัดก่อนหน้า (เปอร์เซ็นต์การเปลี่ยนแปลงตามเวลา) เพื่อตรวจจับค่าผิดปกติเหล่านั้น โดยเริ่มจากการเขียนฟังก์ชันที่แทนที่ค่าผิดปกติด้วยค่ามัธยฐาน (median) ของอนุกรมเวลาทั้งหมด
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Machine Learning สำหรับข้อมูล Time Series ใน Python
คำแนะนำการฝึกหัด
- กำหนดฟังก์ชันที่รับ Series เป็น input แล้วดำเนินการดังนี้:
- คำนวณค่าสัมบูรณ์ของระยะห่างของแต่ละจุดข้อมูลจากค่าเฉลี่ยของ Series จากนั้นสร้าง boolean mask สำหรับจุดข้อมูลที่ห่างจากค่าเฉลี่ยมากกว่าสามเท่าของส่วนเบี่ยงเบนมาตรฐาน
- ใช้ boolean mask นี้แทนที่ค่าผิดปกติด้วยค่ามัธยฐานของ Series ทั้งหมด
- นำฟังก์ชันนี้ไปใช้กับข้อมูล แล้วแสดงผลด้วยโค้ดที่กำหนดให้
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
def replace_outliers(series):
# Calculate the absolute difference of each timepoint from the series mean
absolute_differences_from_mean = np.abs(series - np.mean(series))
# Calculate a mask for the differences that are > 3 standard deviations from zero
this_mask = absolute_differences_from_mean > (np.____(series) * ____)
# Replace these values with the median accross the data
series[this_mask] = np.____(series)
return series
# Apply your preprocessing function to the timeseries and plot the results
prices_perc = prices_perc.____
prices_perc.loc["2014":"2015"].plot()
plt.show()