รวมทุกอย่างเข้าด้วยกัน
คุณมีข้อกังวลสองประการเกี่ยวกับ pipeline ในสตาร์ทอัพตรวจจับภาวะหัวใจเต้นผิดจังหวะ:
- แอปถูกฝึกกับผู้ป่วยทุกช่วงอายุ แต่ผู้ใช้งานส่วนใหญ่คือกลุ่มผู้รักสุขภาพที่มักมีอายุน้อย ซึ่งอาจเป็นกรณีของ domain shift จึงต้องการตัดตัวอย่างที่มีอายุเกิน 50 ปีออก
- ยังคงกังวลเรื่อง overfitting จึงต้องการทดสอบว่าการลดความซับซ้อนของ random forest classifier และการคัดเลือกฟีเจอร์จะช่วยได้หรือไม่
ให้สร้าง pipeline ที่มีขั้นตอน SelectKBest() สำหรับคัดเลือกฟีเจอร์และ RandomForestClassifier ซึ่งนำเข้ามาแล้ว นอกจากนี้ยังใช้งาน GridSearchCV(), Pipeline, numpy ในนาม np และ pickle ได้ โดยข้อมูลพร้อมใช้งานในชื่อ arrh
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การออกแบบ Machine Learning Workflows ด้วย Python
คำแนะนำการฝึกหัด
- สร้าง pipeline โดยใช้
SelectKBest()เป็นขั้นตอนftและRandomForestClassifier()เป็นขั้นตอนclf - สร้าง parameter grid เพื่อปรับแต่ง
kในSelectKBest()และmax_depthในRandomForestClassifier() - ใช้
GridSearchCV()เพื่อปรับแต่ง pipeline กับ grid ดังกล่าว โดยใช้เฉพาะข้อมูลของผู้ที่มีอายุต่ำกว่า 50 ปี - บันทึก pipeline ที่ปรับแต่งแล้วลงในไฟล์ pickle เพื่อนำไปใช้งานจริง
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Create a pipeline
pipe = Pipeline([
('ft', ____), ('clf', ____(random_state=2))])
# Create a parameter grid
grid = {'ft__k':[5, 10], '____':[10, 20]}
# Execute grid search CV on a dataset containing under 50s
grid_search = ____(pipe, param_grid=grid)
arrh = arrh.____[____(arrh['age'] < 50)]
____.____(arrh.drop('class', 1), arrh['class'])
# Push the fitted pipeline to production
with ____('pipe.pkl', ____) as file:
pickle.dump(____, file)