Cross-validation แบบ Shuffling
อย่างที่ทราบกันดี cross-validation คือกระบวนการแบ่งข้อมูลออกเป็นชุด training และชุด test หลายครั้ง โดยในแต่ละครั้งจะเลือกชุดข้อมูลที่ แตกต่างกัน ในแบบฝึกหัดนี้ จะทำ ShuffleSplit cross-validation แบบดั้งเดิมกับข้อมูลมูลค่าบริษัทที่ใช้ก่อนหน้านี้ ต่อจากนี้จะได้เรียนรู้ว่าต้องปรับอะไรบ้างเมื่อนำไปใช้กับข้อมูล time series ข้อมูลที่ใช้คือราคาหุ้นย้อนหลังของบริษัทขนาดใหญ่หลายแห่ง
ในพื้นที่ทำงานมีออบเจกต์ Linear regression (model) พร้อมใช้งาน รวมถึงฟังก์ชัน r2_score() สำหรับให้คะแนนโมเดล ข้อมูลถูกเก็บไว้ในอาร์เรย์ X และ y และมีฟังก์ชันช่วย (visualize_predictions()) ไว้สำหรับแสดงผลลัพธ์
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Machine Learning สำหรับข้อมูล Time Series ใน Python
คำแนะนำการฝึกหัด
- สร้างออบเจกต์ ShuffleSplit cross-validation โดยกำหนด 10 splits
- วนซ้ำผ่าน CV splits โดยใช้ออบเจกต์นี้ ในแต่ละรอบให้:
- ฝึกโมเดลโดยใช้ training indices
- สร้างค่าพยากรณ์โดยใช้ test indices จากนั้นให้คะแนนโมเดล (\(R^2\)) จากค่าพยากรณ์ที่ได้ แล้วเก็บผลลัพธ์ไว้
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# 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)