දත්ත: අපේ AI ව්යාපෘතියේ හදවත ❤️
ඕනෑම AI හෝ Machine Learning ව්යාපෘතියක සාර්ථකත්වය 90%ක්ම රඳා පවතින්නේ අප භාවිතා කරන **දත්තවල ගුණාත්මකභාවය (quality of data)** මතයි. රසවත් කේක් එකක් හදන්න හොඳ පිටි, සීනි, බිත්තර වැනි අමුද්රව්ය අවශ්ය වෙනවා වගේ, නිවැරදි අනාවැකි කියන AI ආකෘතියක් හදන්න අපට හොඳ, පිරිසිදු, සහ අදාළ දත්ත අවශ්ය වෙනවා. "Garbage In, Garbage Out" කියන කියමන මෙහිදී ඉතාම වැදගත්. ඒ කියන්නේ අපි වැරදි හෝ අවුල් සහගත දත්ත ආකෘතියට දුන්නොත්, අපට ලැබෙන්නෙත් වැරදි සහ විශ්වාස කළ නොහැකි ප්රතිඵල.
ಈ ඒකකයේදී, අපි අපේ ලොතරැයි අනාවැකි ආකෘතියට අවශ්ය දත්ත සොයාගන්නා ආකාරය, එහි ව්යුහය තේරුම් ගන්නා ආකාරය සහ එය ආකෘතියට ලබා දීමට පෙර පිරිසිදු කර සූදානම් කරන ආකාරය (Data Preprocessing) පියවරෙන් පියවර ඉගෙන ගනිමු.
පියවර 1: පැරණි ලොතරැයි ප්රතිඵල සොයා ගැනීම 📂
අපට අවශ්ය වන්නේ පසුගිය වසර කිහිපයක ලොතරැයි දිනුම් ඇදීම්වල ප්රතිඵලයි. මෙම දත්ත සාමාන්යයෙන් ජාතික ලොතරැයි මණ්ඩලය (NLB) හෝ සංවර්ධන ලොතරැයි මණ්ඩලය (DLB) වැනි ආයතනවල නිල වෙබ් අඩවිවල පළ කර තිබෙනවා. සමහර විට මෙම දත්ත ඔබට සෘජුවම **CSV (Comma-Separated Values)** හෝ **Excel** ගොනුවක් ලෙස බාගත කරගැනීමට පහසුකම් සලසා තිබිය හැක.
CSV යනු වගුවක ඇති දත්ත, එක් එක් තීරුවේ අගයන් කොමාවකින් (,) වෙන් කර සරල text ගොනුවක් ලෙස ගබඩා කරන ක්රමයකි. මෙය දත්ත හුවමාරුව සඳහා ලොව බහුලවම භාවිතා වන format එකකි.
ප්රායෝගික ක්රියාකාරකම: අපි මේ පාඨමාලාව සඳහා නියැදි දත්ත කට්ටලයක් (sample dataset) නිර්මාණය කරමු. පහත දැක්වෙන දත්ත ටික copy කර, text editor එකක (Notepad වැනි) paste කර, එය `lottery_data.csv` යන නමින් ඔබගේ පරිගණකයේ save කරගන්න.
draw_date,number_1,number_2,number_3,number_4,bonus
2025-08-18,5,12,23,34,8
2025-08-21,7,15,21,33,2
2025-08-25,2,11,19,28,14
2025-08-28,9,18,25,31,6
2025-09-01,4,13,22,30,1
මෙම ගොනුව අපි ඊළඟ පියවර වලදී Python මගින් කියවීමට භාවිතා කරමු.
පියවර 2: දත්ත පිරිසිදු කර සංවිධානය කිරීම 🧹
අපට ලැබෙන දත්ත සෑම විටම 100%ක් පරිපූර්ණ නැත. එහි හිස්තැන් (missing values), වැරදි දත්ත වර්ග (wrong data types) හෝ අනවශ්ය තොරතුරු තිබිය හැක. අපගේ ආකෘතියට ලබා දීමට පෙර මේවා නිවැරදි කිරීම **Data Cleaning** හෝ **Data Preprocessing** ලෙස හැඳින්වේ. මේ සඳහා අපේ ප්රධානතම මෙවලම වන්නේ 2 වන ඒකකයේදී ස්ථාපනය කරගත් **Pandas** library එකයි.
පළමුව, අපි අපගේ Jupyter Notebook එකේ අලුත් file එකක් සාදා, `lottery_data.csv` ගොනුව Pandas භාවිතයෙන් කියවා බලමු.
import pandas as pd
# CSV ගොනුව කියවා එය DataFrame එකකට ලබා ගැනීම
# 'lottery_data.csv' ගොනුව ඔබගේ jupyter notebook file එක තිබෙන තැනම තබන්න.
df = pd.read_csv('lottery_data.csv')
# DataFrame එකේ මුල් පේළි 5 පෙන්වීම
print(df.head())
දැන් අපි පොදුවේ සිදු කරන පිරිසිදු කිරීමේ පියවර කිහිපයක් බලමු:
- දත්ත වර්ග පරීක්ෂා කිරීම: සියලුම අංක, සංඛ්යා (integers) ලෙසත්, දිනය, දිනයක් (datetime) ලෙසත් තිබේදැයි පරීක්ෂා කිරීම.
df.info()විධානය මගින් මෙය බලාගත හැක. - හිස්තැන් ඉවත් කිරීම: යම් පේළියක දත්තයක් חסר නම්, එම සම්පූර්ණ පේළියම ඉවත් කිරීම එක් ක්රමයකි.
df.dropna()මගින් එය කළ හැක. - දත්ත පිළිවෙළට සකස් කිරීම: අපගේ LSTM ආකෘතියට කාලය අනුව අනුක්රමිකව සකස් වූ දත්ත අවශ්ය බැවින්, අපි දත්ත දිනය අනුව ආරෝහණ පිළිවෙළට (oldest to newest) සකස් කළ යුතුය.
df.sort_values(by='draw_date', inplace=True)විධානයෙන් එය කළ හැක.
පියවර 3: දත්ත පුහුණු කිරීම සහ පරීක්ෂා කිරීම සඳහා වෙන් කිරීම 📊
අපේ AI ආකෘතිය ගොඩනැගීමේදී, අපි අප සතුව ඇති සම්පූර්ණ දත්ත කට්ටලයම එයට ඉගැන්වීම සඳහා භාවිතා කරන්නේ නැත. එය හරියට විභාගයකට පාඩම් කරන ශිෂ්යයෙකුට, විභාගයට එන ප්රශ්න පත්රයම පාඩම් කිරීමට දෙනවා වැනිය. එවිට ඔහුට එම ප්රශ්නවලට පිළිතුරු කටපාඩම් කළ හැකි වුවත්, විෂය පිළිබඳ සැබෑ අවබෝධයක් ලැබෙන්නේ නැත.
එම නිසා, අපි අපේ දත්ත කට්ටලය කොටස් දෙකකට වෙන් කරමු:
- පුහුණු දත්ත කට්ටලය (Training Set): මෙය සාමාන්යයෙන් මුළු දත්ත වලින් 80%ක් පමණ වේ. ආකෘතියට රටා ඉගෙන ගැනීමට සහ "පාඩම් කිරීමට" අපි මෙම කොටස භාවිතා කරමු.
- පරීක්ෂණ දත්ත කට්ටලය (Testing Set): මෙය ඉතිරි 20% වේ. ආකෘතිය ඉගෙන ගත් පසු, එය කිසි දිනක දැක නැති මෙම දත්ත ලබා දී, එහි අනාවැකි කොතරම් නිවැරදිදැයි පරීක්ෂා කිරීමට (විභාගයක් පැවැත්වීමට) යොදා ගනී.
මෙම වෙන් කිරීම සඳහා අපි scikit-learn library එක භාවිතා කරමු. (මෙය අපි ඊළඟ ඒකක වලදී ප්රායෝගිකව ක්රියාත්මක කරමු). මෙමගින් අපගේ ආකෘතියේ සැබෑ ක්රියාකාරීත්වය අපක්ෂපාතීව මැනීමට අපට අවස්ථාව ලැබේ.