ข้อจำกัดของการทดสอบด้วย Cross-Validation
สามารถกำหนดค่าขนาดใหญ่มากให้ทั้ง nfold และ num_boost_round ได้หากต้องการทำ cross-validation จำนวนมาก DataFrame cv_results_big ถูกโหลดไว้ในเวิร์กสเปซแล้ว และถูกสร้างขึ้นด้วยโค้ดต่อไปนี้:
cv = xgb.cv(params, DTrain, num_boost_round = 600, nfold=10,
shuffle = True)
ในที่นี้ cv() ทำการ cross-validation ถึง 600 รอบ! พารามิเตอร์ shuffle บอกให้ฟังก์ชันสลับลำดับข้อมูลในแต่ละรอบ
ลองดูข้อมูลนี้เพื่อตรวจสอบค่า AUC ที่ได้ และดูว่าค่าเหล่านั้นถึง 1.0 ด้วย cross-validation หรือไม่ รวมถึงพล็อตกราฟคะแนน AUC ของชุดทดสอบเพื่อดูการเปลี่ยนแปลงในแต่ละรอบ
DataFrame cv_results_big ถูกโหลดไว้ในเวิร์กสเปซแล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การสร้างโมเดลความเสี่ยงด้านเครดิตด้วย Python
คำแนะนำการฝึกหัด
- พิมพ์ห้าแถวแรกของ DataFrame ผลลัพธ์ CV
- พิมพ์ค่าเฉลี่ยของ AUC ชุดทดสอบจาก DataFrame ผลลัพธ์ CV โดยปัดเศษเป็นทศนิยม 2 ตำแหน่ง
- พล็อตกราฟเส้นของคะแนน AUC ชุดทดสอบตลอดแต่ละรอบการทำซ้ำ
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Print the first five rows of the CV results data frame
print(____.____())
# Calculate the mean of the test AUC scores
print(np.____(____[____]).round(2))
# Plot the test AUC scores for each iteration
plt.____(____[____])
plt.title('Test AUC Score Over 600 Iterations')
plt.xlabel('Iteration Number')
plt.ylabel('Test AUC Score')
plt.____()