การจำแนกประเภทผลไม้ที่ความคล้ายคลึงกันมาก [ส้ม, มะนาว, ส้มจีน, แอปเปิ้ล] โดยใช้ SkLearn
ในโลกของ Data analytics สิ่งแรกที่ต้องทำคือหา ชุดข้อมูล หรือ datasets ที่เชื่อถือได้ ในวันนี้ จะขอนำเสนอ การจำแนกประเภทผลไม้ 4 ชนิด ซึ่งมีความคล้ายคลึงกันมากโดยใช้ Machine Learning ต้องขอขอบคุณ จากงานอดิเรก สะสมข้อมูล ของ Dr. Iain Murray from University of Edinburgh ประเทศอังกฤษ โดยสามารถ หาดาว์นโหลดได้จาก
https://github.com/susanli2016/Machine-Learning-with-Python/blob/master/fruit_data_with_colors.txt
ซึ่งรวบรม คุณลักษณะของ ผลไม้ 4 ประเภท คือ ส้ม(orange) แอปเปิ้ล(Apple) มะนาว(Lemon) และ ส้มแมนดาริน (Mandarin) ดังรูปที่ 2
รูปที่ 1 แสดงชุดข้อมูลของ ผลไม้ทั้งสี่ จำแนก ตาม น้ำหนัก (mass) ความสูง (height) ความกว้าง (width) และ ระดับสี (color_score)
1. ความแตกต่างระหว่าง Orange กับ Mandarin
ส้ม (orange) เป็นที่ชื่นชอบในสหรัฐอเมริกาและบราซิลเนื่องจากผู้คนรับประทานดิบและบริโภคในรูปแบบน้ำผลไม้
ส้มแมนดาริน(Madarin) นิยมปลูกในประเทศจีนในช่วง 3000 ปีที่ผ่านมา โดย Orange กับ Mandarin ต่างกันอย่างไร? 1)ส้มมีรูปร่างกลมกว่าในขณะที่แมนดารินจะแบนกว่าที่ปลาย 2) แมนดารินปอกง่ายกว่าส้ม
2. การกระจายตัวข้อมูล(Visualization)
นำเสนอการกระจายตัวข้อมูล ด้วย Boxplotและ histogram เพื่อดูการแจกแจงปกติ
3) ตรวจจับค่าผิดปกติ
boxplot เป็นเครื่องมือสำหรับการตรวจจับค่าผิดปกติ ที่ แสดงภาพการแพร่กระจายของข้อมูลที่เกี่ยวกับค่ากลาง
ลองตรวจดูว่า มี outliner หรือไม่ ดังรูปที่ 6 ก็ไม่พบค่าผิดปกติ
ถึงตรงนี้ เราสามารถเริ่มการวิเคราะห์ได้อย่างสบายใจ แล้วครับ
3. การจำแนกประเภทผลไม้
ขั้นตอนที่ 1 เริ่มโดย ทำการแบ่งข้อมูล ด้วย Train_test_split
บรรทัด 1 : ประกาศขอใช้ไลบรารี่ matplotlib
บรรทัด 2 : ประกาศ ตัวแปร feature_name ของ ชื่อคอลัมน์ที่ใช้ในการจำแนกประเภท
บรรทัด 3 : สร้างตัวแปรอิสระ X ได้แก่ ‘mass’, ‘width’, ‘height’, ‘color_score’
บรรทัด 4 : ขอใช้คำสั่ง train_test_split จากไลบรารี่ scikit-learn
บรรทัด 5 : สร้างตัวแปร X_train, X_test , y_train และ y_test ด้วยฟังก์ชั่น train_test_split() กำหนด test_size 30% (0.3) และกำหนด random_state ถ้าไม่กำหนดจะสุ่มข้อมูลใหม่ทุกครั้งทีรันใหม่
ขั้นตอนที่ 2: MinMaxScaler เป็นการ Scale ให้ข้อมูลมีค่าระหว่างค่าต่ำสุดและสูงสุด เหมาะกับข้อมูลที่มี Standard deviation น้อยมากๆ
บรรทัด 1 : ประกาศขอใช้ไลบรารี่ MinMaxScaler
บรรทัด 2 : ประกาศตัวแปร scaler
บรรทัด 3 : ทำการแปลงค่าข้อมูล ด้วยการ train ข้อมูล ด้วย fit function
บรรทัด 4 : ทำการแปลงข้อมูล ใช้ Transformer API คำนวน Mean และ Standard deviation ก่อน
ขั้นตอนที่ 3: สร้างโมเดลด้วย Decision Trees
บรรทัด 1 : ประกาศขอใช้ไลบรารี่ Decision tree classifier
บรรทัด 2 : Decision tree จะมีสิ่งที่จะต้องปรับหลักๆคือ max_depth จำนวนชั้นของต้นไม้ ถ้า max_depth เป็น 5 ชั้นความลึกของต้นไม้เราจะไม่เกิน 5
บรรทัด 3 : ทำการ train ข้อมูลทดสอบ ทั้ง X_train และ y_train
ขั้นตอนที่ 4: สร้าง แผนภูมิต้นไม้การตัดสินใจ
บรรทัด 1 : ประกาศขอใช้ไลบรารี่ graphviz
บรรทัด 2 : สร้างตัวแปรอิสระ fn เป็น ตัวแบ่ง
บรรทัด 3 : สร้างตัวแปรคลาสที่ต้องการทำนายผล ว่าเป็นผลไม่ใด
บรรทัด 4 : แผนภูมิต้นไม้การตัดสินใจ
บรรทัด 5 : ประกาศประเภทของไฟล์แบบ png
บรรทัด 6 : สร้างไฟล์ชื่อว่า orange_apple_classification_graphivz_April22 บน ไดเรกทรอรี่ ที่ประจำอยู่ เช่น ในกรณีของเราคือ Home directory
บรรทัด 7 : แสดงผลกราฟ
รูปที่ 7: แผนภูมิต้นไม้การตัดสินใจ