เจาะลึกโปรเจกต์แรกกับการสร้าง Machine Learning API สำหรับทำนายการยกเลิกบริการของลูกค้า
ถอดบทเรียนจากนักพัฒนาผู้เปลี่ยนโมเดลใน Jupyter Notebook ให้กลายเป็น FastAPI พร้อมใช้งานจริง

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- โปรเจกต์นี้ใช้ชุดข้อมูล Telco Customer Churn ในการทำนายลูกค้าโทรคมนาคม
- เลือกใช้ FastAPI และ Pydantic เพื่อตรวจสอบความถูกต้องของข้อมูลนำเข้าอัตโนมัติ
- โมเดลที่ฝึกเสร็จจะถูกบันทึกไว้ในรูปไฟล์ joblib เพื่อนำกลับมาโหลดใช้งานใหม่
- การรันเซิร์ฟเวอร์ใช้เครื่องมือ Uvicorn และมีหน้าตาเอกสารทดสอบระบบสำเร็จรูป
หากคุณเคยผ่านการฝึกโมเดลแมชชีนเลิร์นนิงใน Jupyter Notebook แล้วเกิดคำถามว่า "แล้วจะเอายังไงต่อกับมันดี?" บทความนี้คือคำตอบสำหรับคุณ เพราะนี่คือประสบการณ์ตรงจากการพัฒนา API สำหรับทำนายการย้ายค่ายของลูกค้าโทรคมนาคม เพื่อเปลี่ยนงานวิจัยในสมุดบันทึกให้กลายเป็นระบบที่แอปพลิเคชันภายนอกเรียกใช้งานได้จริง
โครงสร้างโปรเจกต์เริ่มต้นด้วยโฟลเดอร์หลัก เช่น โฟลเดอร์ API สำหรับเก็บไฟล์ main.py โฟลเดอร์ Data สำหรับเก็บไฟล์ชุดข้อมูลดิบ โฟลเดอร์ Models สำหรับเก็บไปป์ไลน์ที่ผ่านการเทรนแล้ว และโฟลเดอร์ Notebooks สำหรับกระบวนการทำความสะอาดข้อมูล โดยชุดข้อมูลดิบประกอบด้วยข้อมูลลูกค้าโทรคมนาคมจำนวน 7,043 แถว และ 21 คอลัมน์ ครอบคลุมทั้งข้อมูลส่วนตัวและรายละเอียดบัญชีผู้ใช้

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
หลักการทำงานเปรียบเสมือนการจำลองสถานการณ์ที่ทีมบริการลูกค้าต้องการวิเคราะห์ว่าสมาชิกรายใดกำลังจะเปลี่ยนไปใช้บริการค่ายอื่นก่อนที่พวกเขาจะโบกมือลาจริงๆ แทนที่จะเก็บข้อมูลเชิงลึกเหล่านั้นไว้แค่ในสมุดบันทึก นักพัฒนาได้เลือกแปลงร่างมันให้กลายเป็นระบบเว็บเซอร์วิสที่ใครก็เรียกใช้งานได้
ก่อนจะก้าวไปถึงขั้นตอนการสร้าง API จำเป็นต้องจัดการข้อมูลใน Notebook ให้เรียบร้อยก่อน ซึ่งเริ่มต้นจากการล้างข้อมูล สำรวจข้อมูลเชิงลึก (EDA) ฝึกโมเดลตัวจำแนกประเภทหลายแบบ แล้วเลือกตัวที่ดีที่สุด จากนั้นแปลงโค้ดให้กลายเป็นอาร์ติแฟกต์ที่นำกลับมาใช้ซ้ำได้ผ่านการบันทึกลงดิสก์
"An API is just a way for two programs to talk to each other over the web, using a set of agreed-upon rules."
Eric Mwaimiri
การแปลงโมเดลจาก Jupyter Notebook ให้กลายเป็น API ถือเป็นก้าวสำคัญที่เปลี่ยนงานทดลองเชิงวิชาการให้กลายเป็นซอฟต์แวร์ที่ใช้งานได้จริงในทางธุรกิจ การใช้เฟรมเวิร์กอย่าง FastAPI ช่วยให้กระบวนการนี้รวดเร็วขึ้นมากผ่านระบบเอกสารอัตโนมัติและการตรวจสอบข้อมูลนำเข้า ซึ่งช่วยลดข้อผิดพลาดในขั้นตอนการพัฒนาได้อย่างมหาศาล
ในส่วนของการพัฒนาเว็บเซอร์วิส ได้เลือกใช้ FastAPI ซึ่งเป็นเฟรมเวิร์กภาษา Python ที่ออกแบบมาสำหรับสร้าง API โดยเฉพาะ จุดเด่นสำคัญคือการใช้ Pydantic มากำหนดโครงสร้างข้อมูลนำเข้าอย่างเคร่งครัด เช่น กำหนดให้ฟิลด์ tenure ต้องเป็นตัวเลขจำนวนเต็ม หากผู้ใช้งานส่งข้อมูลมาผิดประเภท ระบบจะปฏิเสธคำขอทันทีก่อนที่ข้อมูลจะหลุดเข้าไปถึงตัวโมเดล
เมื่อระบบเริ่มทำงาน โค้ดจะทำการโหลดไฟล์โมเดลที่บันทึกไว้เพียงครั้งเดียวเพื่อความรวดเร็วในการประมวลผลคำขอ โดยมีเอ็นด์พอยต์หลักสองส่วน ได้แก่ ส่วนตรวจสอบสถานะการทำงานของระบบ และส่วนรับข้อมูลเพื่อส่งผลการทำนายผ่านกระบวนการแปลงข้อมูลให้อยู่ในรูปดาต้าเฟรมก่อนส่งให้โมเดลประมวลผล
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น