เห็ดพิษหรือเห็ดกิน: เรื่องที่ต้องระวัง
มาปิดท้ายคอร์สด้วยการกลับมาแก้ปัญหาการจำแนกความปลอดภัยของเห็ดกันอีกครั้ง คราวนี้จะลองใช้ stacking classifier เพื่อดูว่าสามารถเพิ่มคะแนนได้หรือไม่ เนื่องจาก stacking ใช้ meta-estimator (classifier ชั้นที่สอง) ที่พยายามแก้ไขการทำนายผิดพลาดจากชั้นแรก อินสแตนซ์ที่เคยจำแนกผิดบางส่วนอาจได้รับการแก้ไขได้ ปัญหานี้มีความสำคัญมาก เพราะการระบุว่าเห็ดกินได้หรือไม่นั้นเกี่ยวข้องกับความปลอดภัยโดยตรง
ชุดข้อมูลได้ถูกโหลดและแบ่งเป็นชุด train และ test เรียบร้อยแล้ว คิดว่า stacking จะช่วยให้ทำนายความปลอดภัยของเห็ดได้แม่นยำขึ้นไหม?
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Ensemble Methods ใน Python
คำแนะนำการฝึกหัด
- สร้าง estimator ชั้นแรก ได้แก่ k-nearest neighbors 5 ตัวเพื่อนบ้านโดยใช้อัลกอริทึม ball tree, decision tree classifier ที่มีพารามิเตอร์
min_samples_leaf = 5และmin_samples_split = 15และ Gaussian Naive Bayes classifier - สร้างและ fit stacking classifier โดยใช้พารามิเตอร์
classifiersซึ่งเป็น list ที่บรรจุ classifier ชั้นแรกทั้งหมด และmeta_classifierซึ่งใช้ logistic regression แบบค่าเริ่มต้น
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Create the first-layer models
clf_knn = ____
clf_dt = ____(____, ____, random_state=500)
clf_nb = ____
# Create the second-layer model (meta-model)
clf_lr = LogisticRegression()
# Create and fit the stacked model
clf_stack = ____
clf_stack.fit(X_train, y_train)
# Evaluate the stacked model’s performance
print("Accuracy: {:0.4f}".format(accuracy_score(y_test, clf_stack.predict(X_test))))