Bắt đầu ngayBắt đầu miễn phí

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

Xem khóa học

Hướng dẫn bài tập

  • Dùng thuộc tính dayofweek từ index của lng_df để lấy ngày trong tuần.
  • Dùng hàm get_dummies trên biến ngày trong tuần, đặt prefix là 'weekday'.
  • Đặt index của biến days_of_week trùng với index của lng_df để có thể gộp hai biến này.
  • Nối (concatenate) các DataFrame lng_dfdays_of_week thà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())
Chỉnh sửa và Chạy Mã