เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

รวมทุกอย่างเข้าด้วยกัน

สมมติว่าคุณเพิ่งเข้าร่วมสตาร์ทอัพด้านการตรวจจับภาวะหัวใจเต้นผิดจังหวะ และต้องการฝึกโมเดลบนชุดข้อมูลภาวะหัวใจเต้นผิดจังหวะ arrh คุณสังเกตว่า random forest มักทำผลงานได้ดีในการแข่งขัน Kaggle หลายรายการ จึงอยากทดลองใช้โดยกำหนดความลึกสูงสุดที่ 2, 5 หรือ 10 ผ่าน grid search นอกจากนี้ยังพบว่าชุดข้อมูลมีจำนวนมิติค่อนข้างสูง จึงต้องการพิจารณาผลของการใช้วิธีคัดเลือกฟีเจอร์ด้วย

เพื่อป้องกันการ overfit ข้อมูลได้ถูกแบ่งไว้เรียบร้อยแล้ว โดยจะใช้ X_train และ y_train สำหรับ grid search และใช้ X_test กับ y_test เพื่อประเมินว่าการคัดเลือกฟีเจอร์ช่วยให้ผลดีขึ้นหรือไม่ ชุดข้อมูลทั้ง 4 ส่วนถูกโหลดไว้ในสภาพแวดล้อมแล้ว พร้อมกับ GridSearchCV(), train_test_split(), SelectKBest(), chi2() และ RandomForestClassifier ในชื่อ rfc

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การออกแบบ Machine Learning Workflows ด้วย Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • ใช้ grid search ทดลองกำหนดความลึกสูงสุาที่ 2, 5 และ 10 สำหรับ RandomForestClassifier แล้วเก็บค่าพารามิเตอร์ที่ให้ผลดีที่สุดไว้
  • fit estimator ใหม่อีกครั้งโดยใช้จำนวน estimator ที่ดีที่สุดที่ได้จากขั้นตอนข้างต้น
  • นำ SelectKBest มาใช้คัดเลือกฟีเจอร์โดยใช้ฟังก์ชันให้คะแนน chi2 จากนั้น fit classifier อีกครั้ง

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Find the best value for max_depth among values 2, 5 and 10
grid_search = GridSearchCV(
  ____(random_state=1), param_grid=____)
best_value = grid_search.____(
  ____, ____).best_params_['max_depth']

# Using the best value from above, fit a random forest
clf = rfc(
  random_state=1, ____=best_value).____(X_train, y_train)

# Apply SelectKBest with chi2 and pick top 100 features
vt = SelectKBest(____, k=____).____(X_train, y_train)

# Create a new dataset only containing the selected features
X_train_reduced = ____.transform(____)
แก้ไขและรันโค้ด