Cross-validation với xáo trộn
Như bạn đã biết, cross-validation là quá trình tách dữ liệu thành nhiều cặp tập huấn luyện và tập kiểm tra. Mỗi lần như vậy, bạn chọn một tập huấn luyện và tập kiểm tra khác nhau. Trong bài này, bạn sẽ thực hiện cross-validation kiểu truyền thống ShuffleSplit trên dữ liệu giá trị công ty đã dùng trước đó. Ở phần sau, chúng ta sẽ bàn về những thay đổi cần thiết cho dữ liệu chuỗi thời gian. Dữ liệu sử dụng là lịch sử giá của một số công ty lớn.
Một đối tượng Linear Regression (model) đã có sẵn trong môi trường làm việc cùng với hàm r2_score() để chấm điểm. Dữ liệu được lưu trong các mảng X và y. Chúng tôi cũng cung cấp một hàm hỗ trợ (visualize_predictions()) để giúp bạn trực quan hóa kết quả.
Bài tập này là một phần của khóa học
Machine Learning cho Dữ liệu Chuỗi thời gian bằng Python
Hướng dẫn bài tập
- Khởi tạo một đối tượng cross-validation ShuffleSplit với 10 lần chia (10 splits).
- Lặp qua các lần chia CV bằng đối tượng này. Mỗi vòng lặp:
- Fit mô hình bằng các chỉ số train.
- Tạo dự đoán bằng các chỉ số test, chấm điểm mô hình (\(R^2\)) từ các dự đoán, và thu thập kết quả.
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.
# Import ShuffleSplit and create the cross-validation object
from sklearn.model_selection import ShuffleSplit
cv = ____(____, random_state=1)
# Iterate through CV splits
results = []
for tr, tt in cv.____(X, y):
# Fit the model on training data
____(X[tr], y[tr])
# Generate predictions on the test data, score the predictions, and collect
prediction = ____(X[tt])
score = r2_score(____, ____)
results.append((prediction, score, tt))
# Custom function to quickly visualize predictions
visualize_predictions(results)