สร้างฟีเจอร์วันในสัปดาห์
เราสามารถสร้างฟีเจอร์จาก datetime เพื่อเพิ่มข้อมูลให้กับโมเดล non-linear ได้อีกมาก ข้อมูลทางการเงินส่วนใหญ่มี datetime ซึ่งประกอบด้วยข้อมูลหลายอย่าง ไม่ว่าจะเป็นปี เดือน วัน และบางครั้งก็มีชั่วโมง นาที และวินาที นอกจากนี้ยังสามารถดึงวันในสัปดาห์ ไตรมาสของปี หรือระยะเวลาที่ผ่านไปนับจากเหตุการณ์สำคัญ เช่น การรายงานผลประกอบการได้อีกด้วย
ในแบบฝึกหัดนี้ เราจะดึงเฉพาะวันในสัปดาห์ เนื่องจากชุดข้อมูลของเราครอบคลุมช่วงเวลาไม่นานมากนัก โดยจะใช้ property dayofweek จาก pandas datetime index จากนั้นแปลง dayofweek เป็น dummy variables ด้วย get_dummies() ของ pandas ซึ่งจะสร้างคอลัมน์สำหรับแต่ละวันในสัปดาห์โดยใช้ค่าไบนารี (0 หรือ 1) แล้วตัดคอลัมน์แรกออก เนื่องจากสามารถอนุมานได้จากคอลัมน์อื่น
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Machine Learning สำหรับการเงินด้วย Python
คำแนะนำการฝึกหัด
- ใช้ property
dayofweekจาก index ของlng_dfเพื่อดึงวันในสัปดาห์ - ใช้ฟังก์ชัน
get_dummiesกับตัวแปรวันในสัปดาห์ โดยกำหนด prefix เป็น'weekday' - กำหนด index ของตัวแปร
days_of_weekให้เหมือนกับ index ของlng_dfเพื่อให้สามารถรวมข้อมูลทั้งสองได้ - เชื่อม DataFrame
lng_dfและdays_of_weekเข้าด้วยกันเป็น DataFrame เดียว
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Use pandas' get_dummies function to get dummies for day of the week
days_of_week = pd.get_dummies(lng_df.index.____,
prefix=____,
drop_first=True)
# Set the index as the original dataframe index for merging
days_of_week.index = lng_df.____
# Join the dataframe with the days of week dataframe
lng_df = pd.concat([lng_df, ____], axis=1)
# Add days of week to feature names
feature_names.extend(['weekday_' + str(i) for i in range(1, 5)])
lng_df.dropna(inplace=True) # drop missing values in-place
print(lng_df.head())