DEV Community

Ikaooat
Ikaooat

Posted on

จำแนกประเภทของตัวเลขจากการเขียนมือโดยการใช้ Machine Learning Linear Classifier จาก TensorFlow ในPython

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

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

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

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

ขั้นตอนที่ 1 import library ที่ต้องใช้เข้ามา

Image description

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

อันนี้คือการนำเข้าข้อมูลมากจากตัว TensorFlow keras
Image description

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

Image description

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

Image description

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

Image description

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

Image description

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

Image description

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

Image description

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

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

Image description

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

Image description

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

Image description

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

Image description

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

Image description

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

Image description

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

Image description

แต่ถ้าผิดรูปจะไม่ขึ้น
Image description

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

Image description

Image description

สรุปผล

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

อ้างอิง

1.https://www.geeksforgeeks.org/python-classifying-handwritten-digits-with-tensorflow/?ref=lbp
2.https://deepai.org/machine-learning-glossary-and-terms/hyperplane

Top comments (0)