Doctor AI

Dr. Savath Saypadith

240 ບົດຄວາມ

ການທຳຄວາມສະອາດຂໍ້ມູນ 101: ກຽມພ້ອມຊຸດຂໍ້ມູນລາວສຳລັບ Machine Learning

ໂພສເມື່ອ # Machine Learning # Data Cleaning # Data Science

ສະບາຍດີທຸກທ່ານ! ຍິນດີຕ້ອນຮັບສູ່ບົດຄວາມພື້ນຖານທີ່ສຳຄັນທີ່ສຸດສຳລັບການເລີ່ມຕົ້ນເຮັດ Machine Learning (ML - ການຮຽນຮູ້ຂອງເຄື່ອງຈັກ).

ຖ້າປຽບທຽບການສ້າງໂມເດລ ML ກັບການຕຳໝາກຫຸ່ງ, “ຂໍ້ມູນ” (Data) ກໍຄືວັດຖຸດິບ. ຖ້າໝາກຫຸ່ງບໍ່ສົດ, ໜ່ວຍຫ່ຽວ ຫຼື ປາແດກບໍ່ແຊບ, ຕຳອອກມາກໍຈະບໍ່ແຊບ. ໃນວົງການຄອມພິວເຕີເຮົາເອີ້ນຫຼັກການນີ້ວ່າ “Garbage In, Garbage Out” (ເອົາຂີ້ເຫຍື້ອເຂົ້າໄປ, ກໍໄດ້ຂີ້ເຫຍື້ອອອກມາ). ດັ່ງນັ້ນ, ກ່ອນຈະໄປສ້າງ AI ທີ່ສະຫຼາດລ້ຳ, ເຮົາຕ້ອງມາຮຽນຮູ້ວິທີການ “ທຳຄວາມສະອາດຂໍ້ມູນ” (Data Cleaning) ກັນກ່ອນ.

ໃນບົດຄວາມນີ້, ເຮົາຈະມາຮຽນຮູ້ແບບເທື່ອລະກ້າວພ້ອມກັບການຂຽນໂຄດຄຳສັ່ງງ່າຍໆ ໂດຍເນັ້ນໃສ່ອຸປະສັກທີ່ເຮົາມັກພົບເຫັນໃນຂໍ້ມູນຂອງທ້ອງຖິ່ນລາວເຮົາ.

ການທຳຄວາມສະອາດຂໍ້ມູນ (Data Cleaning) ແມ່ນຫຍັງ?

ການທຳຄວາມສະອາດຂໍ້ມູນ ແມ່ນຂະບວນການຄົ້ນຫາ ແລະ ແກ້ໄຂຂໍ້ມູນທີ່ຜິດພາດ, ບໍ່ຄົບຖ້ວນ, ຂໍ້ມູນຊ້ຳຊ້ອນ ຫຼື ບໍ່ເປັນຮູບແບບດຽວກັນ ເພື່ອໃຫ້ພ້ອມສຳລັບການນຳໄປຝຶກສອນ (Train) ໂມເດລ. ເນື່ອງຈາກນີ້ແມ່ນບົດຮຽນລະດັບເລີ່ມຕົ້ນ, ເຮົາຈະມາໃຊ້ພາສາ Python ແລະ ຫໍສະໝຸດ (Library) ທີ່ຊື່ວ່າ Pandas ເຊິ່ງເປັນເຄື່ອງມືພື້ນຖານງ່າຍໆທີ່ນັກພັດທະນາທົ່ວໂລກໃຊ້ງານ.

ບັນຫາຂໍ້ມູນທີ່ມັກພົບໃນບໍລິບົດຂອງລາວ

ເມື່ອເຮົາເກັບກຳຂໍ້ມູນໃນລາວ ບໍ່ວ່າຈະເປັນຈາກທຸລະກິດ SME ຫຼື ຂໍ້ມູນພາກລັດ, ມັກຈະພົບບັນຫາດັ່ງນີ້:

  1. ຂໍ້ມູນຂາດຫາຍ (Missing Data): ເຊັ່ນ: ເຊັນເຊີວັດແທກລະດັບນ້ຳຂອງຢູ່ປາກເຊອາດຈະຂັດຂ້ອງບາງມື້ ເຮັດໃຫ້ຄ່າວັດແທກເປັນຊ່ອງວ່າງ, ຫຼື ລູກຄ້າບໍ່ຍອມບອກອາຍຸໃນແບບສອບຖາມ.
  2. ຄວາມບໍ່ສະໝ່ຳສະເໝີຂອງຂໍ້ມູນ (Inconsistent Formatting): ຄົນລາວມັກຂຽນໜຶ່ງຄວາມໝາຍແຕ່ຫຼາຍຮູບແບບ ເຊັ່ນ: ແຂວງ “ວຽງຈັນ”, “ນະຄອນຫຼວງວຽງຈັນ”, “VTE” ຫຼື ການຂຽນເບີໂທລະສັບຜູ້ຕິດຕໍ່ ເຊັ່ນ: “020…”, “85620…”, ຫຼື “+856 20…“.

ມາເລີ່ມລົງມືກັນເລີຍ (Step-by-Step Tutorial)

ໃຫ້ສົມມຸດວ່າເຮົາມີທຸລະກິດຮ້ານກາເຟ SME ແຫ່ງໜຶ່ງ ແລະ ເຮົາມີໄຟລ໌ຂໍ້ມູນຍອດຂາຍຊື່ວ່າ coffee_sales.csv.

ຂັ້ນຕອນທີ 1: ນຳເຂົ້າຂໍ້ມູນ (Load the Data)

ກ່ອນອື່ນໝົດ, ເຮົາຕ້ອງນຳເອົາໂປຣແກຣມເສີມທີ່ມີຊື່ວ່າ Pandas ເຂົ້າມາກ່ອນ.

import pandas as pd

# ນຳເຂົ້າຂໍ້ມູນຈາກໄຟລ໌ CSV
df = pd.read_csv('coffee_sales.csv')

# ເບິ່ງຂໍ້ມູນ 5 ແຖວທຳອິດ
print(df.head())

ຂັ້ນຕອນທີ 2: ຈັດການກັບຂໍ້ມູນທີ່ຂາດຫາຍ (Handling Missing Data)

ຖ້າຂໍ້ມູນຈຳນວນແກ້ວທີ່ຂາຍໄດ້ໃນບາງມື້ຂາດຫາຍໄປ (ໃນ Python ຈະສະແດງເປັນ NaN ເຊິ່ງຫຍໍ້ມາຈາກ Not a Number), ເຮົາສາມາດແກ້ໄຂໄດ້ 2 ວິທີຫຼັກໆ:

ວິທີທີ 2.1: ຕັດແຖວນັ້ນຖິ້ມໄປເລີຍ (Drop) ເໝາະສຳລັບກໍລະນີທີ່ຂໍ້ມູນຂາດຫາຍມີຈຳນວນໜ້ອຍຫຼາຍ.

# ຕັດແຖວທີ່ມີຊ່ອງວ່າງຖິ້ມ
df_clean = df.dropna()

ວິທີທີ 2.2: ຕື່ມຄ່າສະເລ່ຍໃສ່ແທນ (Fillna) ລຶບຖິ້ມອາດຈະເສຍດາຍຂໍ້ມູນ, ເຮົາສາມາດເອົາຍອດຂາຍສະເລ່ຍຂອງແຕ່ລະມື້ໄປຕື່ມໃສ່ບ່ອນວ່າງໄດ້. (ເໝາະສຳລັບຂໍ້ມູນລະດັບນ້ຳຂອງເຊັ່ນກັນ ທີ່ເຮົາອາດຈະດຶງຄ່າສະເລ່ຍມາສະແດງແທນມື້ທີ່ເຊັນເຊີດັບ).

# ຊອກຫາຄ່າສະເລ່ຍຂອງຍອດຂາຍ
mean_sales = df['cups_sold'].mean()

# ເອົາຄ່າສະເລ່ຍໄປຕື່ມໃສ່ຊ່ອງທີ່ວ່າງ
df['cups_sold'] = df['cups_sold'].fillna(mean_sales)

ຂັ້ນຕອນທີ 3: ປັບຮູບແບບຕົວໜັງສືໃຫ້ເປັນມາດຕະຖານດຽວກັນ (Formatting Text)

ການຂຽນຊື່ສາຂາ ຫຼື ແຂວງທີ່ບໍ່ຄືກັນ ຈະເຮັດໃຫ້ Machine Learning ເຂົ້າໃຈຜິດວ່າເປັນຫຼາຍໆສະຖານທີ່. ເຮົາຕ້ອງປ່ຽນທຸກຊື່ໃຫ້ເປັນມາດຕະຖານດຽວກັນ.

# ສ້າງວັດຈະນານຸກົມເພື່ອແປງຄຳສັບໃຫ້ຄືກັນ
province_corrections = {
    'Vientiane': 'ນະຄອນຫຼວງວຽງຈັນ',
    'VTE': 'ນະຄອນຫຼວງວຽງຈັນ',
    'ວຽງຈັນ': 'ນະຄອນຫຼວງວຽງຈັນ'
}

# ໃຊ້ຄຳສັ່ງ replace ເພື່ອປ່ຽນຄ່າໃນຖັນ province
df['province'] = df['province'].replace(province_corrections)

ພຽງເທົ່ານີ້, ບໍ່ວ່າພະນັກງານຈະປ້ອນຂໍ້ມູນມາວ່າ VTE ຫຼື Vientiane, ມັນກໍຈະຖືກລວມເປັນ “ນະຄອນຫຼວງວຽງຈັນ” ທັງໝົດ, ເຮັດໃຫ້ໂມເດລ ML ຄຳນວນຍອດຂາຍຕາມແຂວງໄດ້ຖືກຕ້ອງ.

ສິ່ງສຳຄັນທີ່ຄວນຈື່ (Key Takeaways)

ສະຫຼຸບແລ້ວ, ການກຽມພ້ອມຊຸດຂໍ້ມູນເຖິງຈະເບິ່ງຄືວ່າເປັນວຽກທີ່ຈຸກຈິກ ແລະ ຕ້ອງໄດ້ໃຊ້ເວລາຫຼາຍ, ແຕ່ມັນກໍຄືກັບການລ້າງຜັກໃຫ້ສະອາດກ່ອນລົງມືປຸງແຕ່ງອາຫານ. ຖ້າພວກເຮົາຈັດການກັບບັນຫາຂໍ້ມູນທີ່ຂາດຫາຍ ແລະ ປັບແຕ່ງຮູບແບບການຂຽນພາສາລາວໃຫ້ເປັນມາດຕະຖານດຽວກັນໄດ້ແລ້ວ ໂມເດລ Machine Learning ທີ່ເຮົາຈະສ້າງຂຶ້ນມາກໍຈະມີຄວາມຖືກຕ້ອງ, ແມ່ນຍຳ, ແລະ ສາມາດນຳໄປຊ່ວຍພັດທະນາທຸລະກິດ ຫຼື ສັງຄົມຂອງລາວເຮົາໃຫ້ກ້າວໜ້າໄດ້ຢ່າງແທ້ຈິງ.