การสร้าง Learning Curves
หากต้องการทดสอบค่าหลายค่าสำหรับ hyperparameter ตัวเดียว การดูผลในรูปแบบ DataFrame อาจไม่สะดวกนัก ในบทก่อนหน้าได้เรียนรู้เทคนิคที่ช่วยวิเคราะห์สิ่งนี้ได้ดียิ่งขึ้น กราฟที่เรียกว่า 'learning curve' สามารถแสดงให้เห็นผลของการเพิ่มหรือลดค่า hyperparameter ที่มีต่อผลลัพธ์สุดท้ายได้อย่างชัดเจน
แทนที่จะทดสอบเพียงไม่กี่ค่าสำหรับ learning rate คราวนี้จะทดสอบหลายค่าเพื่อให้เห็นผลกระทบของ hyperparameter นี้ในช่วงค่าที่กว้างขึ้น ฟังก์ชันที่มีประโยชน์จาก NumPy คือ np.linspace(start, end, num) ซึ่งช่วยสร้างชุดตัวเลขจำนวน num ค่าที่กระจายเท่ากันภายในช่วง (start, end) ที่กำหนด
ชุดข้อมูล X_train, X_test, y_train และ y_test พร้อมใช้งานแล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การปรับ Hyperparameter ใน Python
คำแนะนำการฝึกหัด
- สร้างรายการ learning rate จำนวน 30 ค่าที่กระจายเท่ากันระหว่าง 0.01 ถึง 2
- สร้างลูปในลักษณะเดียวกับแบบฝึกหัดที่แล้ว แต่บันทึกเฉพาะค่าความแม่นยำลงในรายการ
- พล็อตกราฟระหว่าง learning rate กับค่าความแม่นยำ
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Set the learning rates & accuracies list
learn_rates = np.linspace(____, ____, num=____)
accuracies = []
# Create the for loop
for learn_rate in learn_rates:
# Create the model, predictions & save the accuracies as before
model = GradientBoostingClassifier(learning_rate=____)
predictions = model.fit(____, ____).predict(____)
accuracies.append(accuracy_score(y_test, ____))
# Plot results
plt.plot(____, ____)
plt.gca().set(xlabel='learning_rate', ylabel='Accuracy', title='Accuracy for different learning_rates')
plt.____