Tạo đặc trưng theo ngày trong tuần
Bạn có thể kỹ thuật hóa các đặc trưng thời gian để bổ sung thêm thông tin cho các mô hình phi tuyến. Hầu hết dữ liệu tài chính có datetime, trong đó chứa rất nhiều thông tin — năm, tháng, ngày, và đôi khi cả giờ, phút, giây. Bạn cũng có thể lấy ngày trong tuần, quý trong năm, hoặc thời gian đã trôi qua kể từ một sự kiện nào đó (ví dụ: báo cáo lợi nhuận).
Ở đây, chúng ta chỉ lấy ngày trong tuần vì tập dữ liệu không kéo dài về quá khứ. Thuộc tính dayofweek từ pandas datetime index sẽ giúp lấy ngày trong tuần. Sau đó, bạn sẽ one-hot hóa dayofweek bằng get_dummies() của pandas. Cách này tạo các cột cho từng ngày trong tuần với giá trị nhị phân (0 hoặc 1). Ta loại bỏ cột đầu tiên vì có thể suy ra từ các cột còn lại.
Bài tập này là một phần của khóa học
Machine Learning cho Tài chính bằng Python
Hướng dẫn bài tập
- Dùng thuộc tính
dayofweektừ index củalng_dfđể lấy ngày trong tuần. - Dùng hàm
get_dummiestrên biến ngày trong tuần, đặt prefix là'weekday'. - Đặt index của biến
days_of_weektrùng với index củalng_dfđể có thể gộp hai biến này. - Nối (concatenate) các DataFrame
lng_dfvàdays_of_weekthành một DataFrame duy nhất.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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())