จำแนกประเภทของตัวเลขจากการเขียนมือโดยการใช้ Machine Learning Linear Classifier จาก TensorFlow ในPython
Tags: python, linearclassifier, ai, machinelearning
Published: 2024-04-12 10:43:47

การจำแนกตัวเลขด้วยลายมือนั้นเป็นปัญหาสุดเบสิคขอการทำ **Machine Learning** อยู่แล้วซึ่งสามาถแก้ไขได้หลายวิธีมากๆ แต่ในหลากหลายวิธีในการแก้ไขปัญหานี้เราจะใช้ TensorFlow (tf.keras) ซึ่งเป็นการใช้อัลกอริทึม **Linear Classifier** 

Linear Classifier คืออะไร? ตอบได้ว่ามันคือ อัลกอริธึมที่แยกวัตถุทั้งสองประเภทออกจากกันโดยใช้เส้น และ Hyperplane

Hyperplane คือ พื้นที่ขนาดย่อยที่จะเล็กกว่ามิตินั้น 1 มิติ สมมติเป็น 2 มิติ hyperplane จะมี 1 มิติหรือเส้นตรงก็ได้ ในสามมิติ hyperplane ก็จะมี 2 มิติ โดยมันคือตัวแบ่งพื้นที่ให้แบ่งออกเป็นสองซีก

## ขั้นตอนการทำ
**<u>ขั้นตอนที่ 1 import library ที่ต้องใช้เข้ามา </u>**

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

**<u>ขั้นตอนที่ 2 น้ำเข้าข้อมูลที่ต้องการใช้เข้ามาโดยนำเข้ามาจาก library TensorFlow keras ซึ่งเป็น Api online เข้ามา </u>**

อันนี้คือการนำเข้าข้อมูลมากจากตัว TensorFlow keras
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/naikjzrp40nyvdmfke6y.png)

ต่อมาคือการปรับpixel ของรูปที่นำข้อมูลเข้ามา ให้อยู่ในขอบเขตของ 0 ถึง 1 โดยนำมาหารกับ 255 ซึ่งเป็นเลขที่สูงสุดของค่าสี(สีขาว)

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

จากนั้นทำการแปลงข้อมูลของตัวข้อมูลตัวเลขให้การเป็น array โดยนำเข้าข้อมูลมาแค่ 1 หมื่นตัวแรกเท่านั้น

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

**<u>ขั้นตอนที่ 3 กำหนดตัวข้อมูลสูงสุดที่นำเข้ามา และ แบ่งตัวข้อมูลเป็นสองแบบเป็นรูปและตัวหนังสือ </u>**

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

**<u>ขั้นตอนที่ 4 Train ตัว Model AI ของเราให้อ่านตัวเลขที่เป็นตัวเขียนออก </u>**

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

**<u>ขั้นตอนที่ 5 มาเช็คความแม่นยำของ model </u>**

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

ซึ่งมีความแม่นยำถึง

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

**<u>ขั้นตอนสุดท้ายมาลองเล่นตัว AI กันดีกว่า </u>**

เราจะ Display รูปเพือทำนายด้วยคำสั่งนี้

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

ใช้งานด้วยการใส่ตัวเลขเข้าไปป

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

จะออกเป็นแบบนี้

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

ทีนี้มาลองทำนายกันซึ่งโค้ดเป็นปบบนี้


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



จากโค้ด เราจะนำข้อมูลรูปเข้ามาซึ่งเป็นตัวแปร array โดยให้ใส่เลขตรงนี้

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

ทีนี้เราจะมาเทียบกับเฉลยซึ่งคือตัวนี้

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

ถ้ามันถูก จะoutput ข้อมูลแบบนี้

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

แต่ถ้าผิดรูปจะไม่ขึ้น
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/filcxkazw2swi2rwqnww.png)

ตัวอย่างเพิ่มเติม

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


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

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

## อ้างอิง
1.[https://www.geeksforgeeks.org/python-classifying-handwritten-digits-with-tensorflow/?ref=lbp](https://www.geeksforgeeks.org/python-classifying-handwritten-digits-with-tensorflow/?ref=lbp)
2.[https://deepai.org/machine-learning-glossary-and-terms/hyperplane](https://deepai.org/machine-learning-glossary-and-terms/hyperplane)