ประเภทข้อมูล (Data Types) ใน Machine Learning ด้วย Python

การรู้จักและจัดการกับประเภทของข้อมูล (Data Types) จะช่วยให้เราสามารถเลือกและใช้โมเดล Machine Learning ได้อย่างถูกต้อง ประเภทของข้อมูล (Data Types) ใน Machine Learning จะแบ่งออกเป็น 2 ประเภท คือ 

  1. Numerical data types เป็นประเภทข้อมูลที่มีค่าเป็นตัวเลข ประเภทข้อมูลที่มีค่าเป็นตัวเลข ซึ่งสามารถนำมาวิเคราะห์และประมวลผลได้โดยตรง เป็นประเภทข้อมูลที่สำคัญมากใน Machine Learning โดยเฉพาะในงานที่เกี่ยวข้องกับการทำนายหรือคาดการณ์ เช่น การทำนายราคาของบ้านจากข้อมูลตัวเลขเกี่ยวกับพื้นที่บ้าน หรือการคาดการณ์ว่าลูกค้าจะชื้อสินค้าหรือไม่จากข้อมูลตัวเลขเกี่ยวกับประวัติการสั่งซื้อของลูกค้าก่อนหน้า แบ่งออกได้เป็น 2 ประเภทหลัก คือ
  • Continuous numerical data type: เป็นข้อมูลตัวเลขที่สามารถมีค่าได้ต่อเนื่องกัน ไม่มีขีดจำกัดในการระบุค่า เช่น ความยาวของเส้นตรง หรือ อุณหภูมิ ระยะเวลาที่ใช้ในการทำงาน เป็นต้น ซึ่งสามารถวัดค่าได้เป็นทศนิยม
  • Discrete numerical data type: เป็นข้อมูลตัวเลขที่มีค่าแบบจำกัดเฉพาะบางค่า ไม่สามารถมีค่าต่อเนื่องได้ มีค่าเป็นตัวเลขที่แตกต่างกันแบบไม่ต่อเนื่อง เช่น จำนวนคนในครอบครัว หรือ จำนวนผู้ป่วยในโรงพยาบาล จำนวนคนที่มาใช้บริการในแต่ละวัน จำนวนสินค้าที่ขายในแต่ละวัน เป็นต้น ซึ่งสามารถวัดค่าได้เป็นจำนวนเต็ม
  1. Categorical data types เป็นประเภทข้อมูลที่ไม่ใช่ตัวเลข และมีค่าเป็นแบบกลุ่มหรือประเภทของข้อมูล เช่น เพศ (Male, Female) หรือ สีของผ้า (Red, Green, Blue) เป็นต้น ข้อมูลที่เป็นประเภทหมวดหมู่ ไม่สามารถนับหรือนำมาหาค่าเฉลี่ยได้ เช่น สี, เพศ, ประเภทของสินค้า ฯลฯ ซึ่งจะมีค่าเป็นคำตอบหรือหมวดหมู่เท่านั้น ข้อมูลประเภทนี้ต้องถูกแปลงเป็นตัวเลขก่อนจึงจะนำมาใช้ในการสร้างโมเดล Machine Learning ได้ เช่น โดยการใช้เทคนิค One-hot encoding หรือ Label Encoding ซึ่งทำให้ข้อมูลที่เป็น categorical data types ถูกแปลงเป็น numerical data types ซึ่งสามารถนำมาใช้ได้ในการสร้างโมเดล Machine Learning ได้ ซึ่งแบ่งออกเป็น 2 ประเภทหลัก คือ
  • Nominal categorical data type: เป็นข้อมูลแบบกลุ่มที่ไม่มีลำดับหรือลำดับที่ไม่สำคัญ เช่น เพศ (Male, Female) หรือ สีของผ้า (Red, Green, Blue)
  • Ordinal categorical data type: เป็นข้อมูลแบบกลุ่มที่มีลำดับหรือลำดับที่สำคัญ เช่น การให้คะแนนการสอบ (A, B, C, D, F) หรือความพึงพอใจ (Very satisfied, Satisfied, Neutral, Dissatisfied, Very dissatisfied)

ใน Machine Learning, ordinal data types มักจะถูกแปลงเป็น numerical data types โดยกำหนดให้ค่าของข้อมูลสามารถนำมาคำนวณได้ โดยให้แต่ละระดับหรือลำดับของ ordinal data types มีค่าเป็นตัวเลขเรียงกัน ยกตัวอย่างเช่น เมื่อแปลงข้อมูลเกรดของนักเรียนจาก A, B, C, D, F เป็นตัวเลข จะสามารถกำหนดค่า A=5, B=4, C=3, D=2, F=1 ได้ โดยที่มีลำดับของความสำคัญในข้อมูลนั้นๆ ยังคงเดิมอยู่

Data Types ใน Machine Learning เป็นสิ่งสำคัญที่ช่วยระบุประเภทของข้อมูลและวิธีการประมวลผลข้อมูลในการสร้างและฝึกโมเดล Machine Learning ด้วย Python ดังนั้น Data Types สำคัญในการสร้างและฝึกโมเดล Machine Learning ซึ่ง Data Types จะช่วยให้เราเลือก Algorithm และ Preprocessing ที่เหมาะสมกับประเภทของข้อมูล และช่วยลดปัญหาการ Overfitting หรือ Underfitting ของโมเดล Machine Learning ที่เราสร้างขึ้น ใน Machine Learning ที่จะเขียนด้วย Python จะมีการใช้งาน Data Types หลากหลายชนิด โดยสามารถแบ่งได้เป็นหลักๆ ดังนี้

  1. Numerical Data Types: เป็นประเภทข้อมูลที่เป็นตัวเลข แบ่งออกเป็น 2 ประเภทคือ integer (จำนวนเต็ม) และ float (ทศนิยม)  ซึ่งเป็นตัวเลขที่ใช้เป็นข้อมูลหลักในการพัฒนาโมเดล Machine Learning โดย integer คือตัวเลขจำนวนเต็มและ float คือตัวเลขที่มีจุดทศนิยม

  2. Categorical Data Types: เป็นประเภทข้อมูลที่เป็นตัวหนังสือ แบ่งออกเป็น 2 ประเภทคือ nominal (ไม่มีลำดับ) และ ordinal (มีลำดับ) ได้แก่ ตัวหนังสือ (string) และ boolean (True/False) โดยใช้เป็นข้อมูลเพื่อแทนคุณลักษณะที่เป็นกลุ่มของข้อมูล เช่น เพศ (male/female), สี (red/green/blue) ฯลฯ

  3. Ordinal Data Types: เป็นประเภทของข้อมูลที่มีลำดับหรือลักษณะของความสัมพันธ์ระหว่างข้อมูล โดยมักใช้ในการอธิบายลักษณะของข้อมูลที่มีระดับหรือชั้นความสำคัญต่างกัน ตัวอย่างเช่น เกรดของนักเรียน (A, B, C, D, F) ซึ่งมีความสำคัญต่างกัน โดยเกรด A มีความสำคัญสูงสุดและ F มีความสำคัญต่ำที่สุด อีกตัวอย่างหนึ่งคือ การประเมินความพึงพอใจของลูกค้า (Very Satisfied, Satisfied, Neutral, Unsatisfied, Very Unsatisfied) โดยที่มีลำดับของความพึงพอใจตามลำดับของข้อมูลนี้ รวมถึงตัวเลขแบบตัวเลขที่มีลำดับ เช่น ระดับการศึกษา (ประถม/มัธยม/ปวช/ปวส) ฯลฯ

  4. Time Series Data Types: เป็นประเภทข้อมูลที่เกี่ยวข้องกับเวลา ใช้สำหรับการทำนายการเปลี่ยนแปลงของข้อมูลในอนาคตข้อมูลที่เกี่ยวข้องกับเวลา เช่น การติดตามการขายสินค้าในช่วงเวลาหนึ่งๆ

  5. Image Data Types: เป็นประเภทข้อมูลที่เป็นภาพ ใช้สำหรับ Computer Vision และ Deep Learning ซึ่งใน Machine Learning จะนำภาพมาแปลงเป็นตัวเลข (image to numeric) ข้อมูลภาพที่ใช้สำหรับการสร้างโมเดล Machine Learning ที่เกี่ยวข้องกับการจัดการภาพ เช่น การจำแนกภาพสัตว์

  6. Text Data Types: เป็นประเภทข้อมูลที่เป็นข้อความ ใช้สำหรับภาษาธรรมชาติและภาษามนุษย์ แต่ใน Machine Learning จะใช้เทคนิคการแปลงข้อความเป็นตัวเลข (text to numeric) ข้อมูลภาษาซึ่งใช้สำหรับการประมวลผลข้อความ เช่น การจัดหมวดหมู่หรือวิเคราะห์เนื้อหาข่าว

ใน Python จะมีการจัดการกับ Data Types โดยใช้โครงสร้างข้อมูลต่างๆ เช่น List, Tuple, Set และ Dictionary โดยตัวแปรที่ใช้สำหรับเก็บข้อมูลจะต้องมีการประกาศชนิดของข้อมูลไว้ด้วย

การใช้ Python มาวิเคราะห์ข้อมูล ยังสามารถทำการวิเคราะห์ Data Types อื่นๆ ได้อีกด้วย เช่น

  1. วิเคราะห์ Data Types ของคอลัมน์ใน pandas dataframe
import pandas as pd

# โหลดไฟล์ csv เป็น pandas dataframe
df = pd.read_csv('data.csv')

# วิเคราะห์ Data Types ของคอลัมน์ใน dataframe
print(df.dtypes)

  1. วิเคราะห์ Data Types ของข้อมูลจากไฟล์ JSON
import json

# โหลดไฟล์ JSON
with open('data.json', 'r') as f:
    data = json.load(f)

# วิเคราะห์ Data Types ของข้อมูล
for key, value in data.items():
    print(f"{key}: {type(value)}")

  1. วิเคราะห์ Data Types ของข้อมูลจากไฟล์ XML
import xml.etree.ElementTree as ET

# โหลดไฟล์ XML
tree = ET.parse('data.xml')
root = tree.getroot()

# วิเคราะห์ Data Types ของข้อมูล
for child in root:
    print(f"{child.tag}: {type(child.text)}")

  1. วิเคราะห์ Data Types ของข้อมูลจากไฟล์ Excel
import pandas as pd

# โหลดไฟล์ Excel เป็น pandas dataframe
df = pd.read_excel('data.xlsx')

# วิเคราะห์ Data Types ของคอลัมน์ใน dataframe
print(df.dtypes)

ตัวอย่าง การเขียน Python วิเคราะห์ข้อมูล Data Types ต่างๆ ของแต่ละ feature ของ DataFrame ใน Pandas สามารถทำได้ดังนี้

import pandas as pd

# โหลดข้อมูลจากไฟล์ CSV
df = pd.read_csv('data.csv')

# ตรวจสอบประเภทของแต่ละคอลัมน์
print(df.dtypes)

# แสดงข้อมูลทางสถิติของคอลัมน์ที่เป็นตัวเลข
print(df.describe())

# หาค่าสถิติของคอลัมน์ที่ไม่ใช่ตัวเลข
print(df['col_name'].value_counts())

# แปลงประเภทข้อมูลของคอลัมน์
df['col_name'] = df['col_name'].astype('category')

โดยที่ 'data.csv' คือชื่อไฟล์ CSV ที่เราต้องการเปิดอ่านข้อมูล และ 'col_name' คือชื่อคอลัมน์ที่เราต้องการดูข้อมูลประเภทของมัน และเปลี่ยนประเภทข้อมูล (ถ้าต้องการ) ใน DataFrame ของเรา