โมเดล Bagging ที่ซับซ้อนขึ้น
หลังจากสำรวจข้อมูลเซมิคอนดักเตอร์แล้ว ลองสร้าง Bagging Classifier เพื่อทำนายป้ายกำกับ 'Pass/Fail' จากฟีเจอร์ที่กำหนดให้
ชุดข้อมูลที่ผ่านการประมวลผลแล้วมีชื่อว่า uci_secom และได้เตรียมชุดข้อมูลสำหรับฝึกและทดสอบไว้ให้แล้ว
เนื่องจากคลาสเป้าหมายมีความไม่สมดุลสูง ให้ใช้ Logistic Regression แบบ "balanced" เป็น Base Estimator
นอกจากนี้จะใช้พารามิเตอร์ solver='liblinear' เพื่อลดเวลาในการคำนวณของ LogisticRegression ซึ่งเป็น Optimizer ที่เร็วกว่าค่าเริ่มต้น
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Ensemble Methods ใน Python
คำแนะนำการฝึกหัด
- สร้าง Logistic Regression เพื่อใช้เป็น Base Classifier โดยระบุพารามิเตอร์:
class_weight='balanced',solver='liblinear'และrandom_state=42 - สร้าง Bagging Classifier โดยใช้ Logistic Regression เป็น Base Estimator กำหนดจำนวนฟีเจอร์สูงสุดเป็น
10และเปิดใช้งานคะแนน Out-of-Bag - แสดงคะแนน Out-of-Bag เพื่อเปรียบเทียบกับค่าความแม่นยำ
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Build a balanced logistic regression
clf_lr = ____
# Build and fit a bagging classifier
clf_bag = ____(____, ____, ____, random_state=500)
clf_bag.fit(X_train, y_train)
# Evaluate the accuracy on the test set and show the out-of-bag score
pred = clf_bag.predict(X_test)
print('Accuracy: {:.2f}'.format(accuracy_score(y_test, pred)))
print('OOB-Score: {:.2f}'.format(____))
# Print the confusion matrix
print(confusion_matrix(y_test, pred))