Wine Quality Prediction โดยการใช้ Machine Learning Logistic Regression ใน Python
Tags: python, machinelearning
Published: 2024-04-16 14:29:51

เราสามารถคาดการณ์คุณภาพของไวน์ จากการใช้ชุดข้อมูลคุณภาพไวน์ที่มีซึ่งสามารถหาได้บนอินเทอร์เน็ต โดยชุดข้อมูลนี้เป็นคุณสมบัติพื้นฐานที่ส่งผลต่อการจำแนกคุณภาพของไวน์ และด้วยการใช้ระบบการเรียนรู้ของ **Machine Learning** เราจะสามารถคาดการณ์คุณภาพของไวน์ได้

## **ขั้นตอนการทำ**

**1. Import library และ Dataset ที่ต้องใช้**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/927edgjdbto2wd83jfhb.png)

Output หน้าตาของ Dataset ที่นำเข้ามา

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xq5qptg2p7n4hoq9niw5.png)

**2. เช็คจำนวนและประเภทของชุดข้อมูล โดยแยกเป็นคอลัมน์**
`df.info()` - จำนวนของชุดข้อมูล
`df.describe().T` - สำรวจการวัดทางสถิติเชิงพรรณนาของชุดข้อมูล

**3. การวิเคราะห์ข้อมูล**

- Exploratory Data Analysis(EDA) เป็นแนวทางในการวิเคราะห์ข้อมูลเชิงสำรวจ ใช้เพื่อค้นหาหรือเพื่อตรวจสอบสมมติฐานโดยใช้ข้อมูลสรุปทางสถิติและการแสดงภาพกราฟิก โดยเราจะมาเช็คจำนวนค่า Null ในคอลัมน์ชุดข้อมูล

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fl3aa2d6gfh8lcgh1zxu.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d5xt4c7o3248idx92rs2.png)

- ลองใส่ค่าที่หายไปด้วยการหาค่าประมาณ เนื่องจากข้อมูลในแต่คอลัมน์เป็นค่าที่ต่อเนื่องกัน

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a8eqkz8yrfpotti6b0hy.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y7a9c0aqoeuxalejg3a4.png)

- วาด Histogram เพื่อแสดงภาพการกระจายตัวของข้อมูลที่มีค่าต่อเนื่องกันในคอลัมน์ของชุดข้อมูล

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5bwsv057uuis0rplwmuk.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qisuqeycs1awzy3lujcj.png)

- วาดแผนภาพการนับเพื่อแสดงภาพข้อมูลตัวเลขสำหรับคุณภาพของไวน์แต่ละชนิด

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gh56eeuszdvrlibnfs9p.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2o50f95pch7c2km1vj7n.png)

**4. กรองข้อมูล** 

- หลายครั้งที่ข้อมูลที่ใช้มีคุณสมบัติซ้ำซ้อน ซึ่งไม่ได้ช่วยในการเพิ่มประสิทธิภาพของการทำ Machine Learning นั่นคือเหตุผลที่เราลบบางข้อมูลออกก่อนที่จะใช้เพื่อฝึก Machine ต่อไป

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nudsfn12c3aefkcpmflf.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f1mrt7xiln8jaoo6wv1p.png)

จากแผนที่ความร้อนข้างต้นสามารถสรุปได้ว่า 'ความหนาแน่น' และ 'น้ำตาลที่ตกค้าง' มีความสัมพันธ์กันสูง เราจึงจะลบข้อมูลชุดนี้ออก

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dknabq3zoe5kcobfgtew.png)

**5. การพัฒนาแบบจำลองข้อมูล**

- เตรียมข้อมูลแยกออกเป็นข้อมูลสำหรับการฝึกและการตรวจสอบ เพื่อให้สามารถเลือกประสิทธิภาพของโมเดลที่ดีที่สุดตามกรณีการใช้งาน เราจะฝึกโมเดลการจำแนกประเภท Art Machine Learning บางส่วน จากนั้นเลือกประเภทที่ดีที่สุดโดยใช้ข้อมูลการตรวจสอบ จากนั้นจะทำการแทนคอลัมน์ที่มีประเภทข้อมูลวัตถุ ให้แทนที่ด้วย 0 และ 1 เนื่องจากมีข้อมูลเพียงสองหมวดหมู่

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z2fbi2an5c6ajbe2j6q2.png)

- หลังจากแยกคุณสมบัติและตัวแปรเป้าหมายออกจากชุดข้อมูลแล้ว จะแบ่งออกเป็นอัตราส่วน 80:20 สำหรับการเลือกโมเดล

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uazmdegp5u2wzhlrv0p0.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hr91sjjjj895d87xyz5y.png)

- จัดระเบียบข้อมูล ทำให้ข้อมูลเป็นมาตรฐานก่อนการฝึกช่วยให้ สามารถฝึกฝนโมเดลได้อย่างเสถียรและรวดเร็วมากขึ้น

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dnk0egv31qeb1m3xfn9m.png)

- ฝึกโมเดล

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2s8jswbb10dhbz1jxoal.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kwinhneud2hr1znq8994.png)

**6. การประเมินแบบจำลอง**

จากการประเมินความถูกต้องข้างต้น สามารถพูดได้ว่าตัวแยกประเภท Logistic Regression และ SVC ทำงานได้ดีกว่าในบนข้อมูล Validation โดยมีความแตกต่างน้อยกว่าระหว่างข้อมูล Validation และ Training เรามาพล็อต Confusion matrix รวมถึงข้อมูล Validation โดยใช้แบบจำลอง Logistic Regression

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mq7xchjysnpjr5z3v7b8.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/711aynqjk85lxelrso70.png)

Print การจำแนกประเภทสำหรับโมเดลที่มีประสิทธิภาพที่สุด

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sa8x49qe34aadwmr149k.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ou7ufybg4m37kplfolqd.png)

## **สรุปผล**
จากการสรุปผลของ Report ข้างต้นที่ทำมาแล้วข้อมูลมีความแม่นยำโดยรวม 83% ซึ่งถือว่าเยอะพอสมควร โดยตัวเลขนี้บ่งบอกถึงเปอร์เซ็นต์ของคุณภาพไวน์ที่คาดการณ์ได้ถูกต้อง ไม่ว่าจะคุณภาพดีที่สุด และ แย่ที่สุด จากกลุ่มตัวอย่างที่มีทั้งหมด 
## **อ้างอิง**
https://www.geeksforgeeks.org/wine-quality-prediction-machine-learning/