4 වන ඒකකය: දත්ත ගවේෂණය කිරීම (Data Exploration)

අපගේ දත්ත කට්ටලයේ සැඟවුණු කතාව ප්‍රස්තාර සහ සංඛ්‍යාන මගින් අනාවරණය කරගනිමු.

දත්ත සමඟ කතාබහ කිරීම 🗣️

අපි 3 වන ඒකකයේදී අපේ දත්ත ටික පිරිසිදු කරලා, පිළිවෙළකට සකස් කරගත්තා. දැන් තියෙන්නේ AI ආකෘතියක් හදන්න කලින්, ඒ දත්ත ටික හොඳින් තේරුම් ගන්න එක. මේ ක්‍රියාවලියට අපි කියන්නේ දත්ත ගවේෂණය (Data Exploration) කියලා.

මෙය හරියට රහස් පරීක්ෂකයෙක් සාක්ෂි පුවරුවක් දිහා බලනවා වගේ වැඩක්. එකපාරටම නිගමනවලට එන්නේ නැතුව, මුලින්ම හැම සාක්ෂියක් දිහාම බලලා, ඒවා අතර තියෙන සම්බන්ධතා, අමුතු දේවල් සහ රටා මොනවද කියලා හොයනවා. මේ ඒකකයේදී, අපිත් අපේ ලොතරැයි දත්ත දිහා විමසිල්ලෙන් බලලා, වැඩියෙන්ම ඇදී ඇති අංක ("Hot Numbers" 🔥) සහ අඩුවෙන්ම ඇදී ඇති අංක ("Cold Numbers" ❄️) මොනවද කියලා හොයාගන්න යනවා. මේ සඳහා අපේ ප්‍රධානතම මෙවලම් වෙන්නේ Pandas සහ දත්ත ප්‍රස්තාර බවට පත් කරන Matplotlib සහ Seaborn libraries.


පියවර 1: අංකවල ව්‍යාප්තිය විශ්ලේෂණය (Frequency Analysis)

අපේ පළවෙනිම කාර්යය තමයි, මේ දක්වා ඇදී ඇති සියලුම දිනුම් ඇදීම් වලදී, එක් එක් අංකය කොத்தனை වාරයක් ඇදී තිබෙනවාද යන්න ගණනය කිරීම. මේකට අපි කියන්නේ ව්‍යාප්ති විශ්ලේෂණය (Frequency Analysis) කියලා. Pandas භාවිතයෙන් මෙය ඉතාම පහසුවෙන් කරගන්න පුළුවන්.

අපි 3 වන ඒකකයේදී සෑදූ `lottery_data.csv` ගොනුව භාවිතා කරමින්, Jupyter Notebook එකේ පහත කේතය ක්‍රියාත්මක කර බලමු.

import pandas as pd # 3 වන ඒකකයේදී සෑදූ CSV ගොනුව load කරගනිමු. # ඔබට සැබෑ දත්ත විශාල ප්‍රමාණයක් ඇත්නම්, ප්‍රතිඵල වඩාත් රසවත් වනු ඇත. df = pd.read_csv('lottery_data.csv') # අපට අවශ්‍ය අංක තිබෙන තීරු (columns) පමණක් තෝරාගනිමු. number_cols = ['number_1', 'number_2', 'number_3', 'number_4', 'bonus'] # එම තීරුවල ඇති සියලුම අංක එකම ලැයිස්තුවකට දමා ගනිමු. all_numbers = df[number_cols].values.flatten() # Pandas Series එකක් බවට පත් කර, එක් එක් අංකය කොපමණ වාරයක් ඇත්දැයි ගණනය කරමු. frequency_counts = pd.Series(all_numbers).value_counts() print("සෑම අංකයක්ම ඇදී ඇති වාර ගණන:") print(frequency_counts)

මෙම කේතය ක්‍රියාත්මක කළ විට, ඔබට එක් එක් අංකය සහ එය ඇදී ඇති වාර ගණන දැක්වෙන ලැයිස්තුවක් ලැබේවි. වැඩිම වාර ගණනක් ඇති අංක තමයි අපේ "Hot Numbers".


පියවර 2: දත්ත දෘශ්‍යකරණය (Data Visualization) 📊

"වචන දහසකට වඩා පින්තූරයක් වටිනවා" කියනවනේ. දත්ත දිහා බලන් ඉන්නවට වඩා, ඒවා ප්‍රස්තාරයක් බවට පත් කළාම අපිට රටා හඳුනාගන්න හරිම පහසුයි. අපි දැන් උඩින් හොයාගත්ත අංකවල ව්‍යාප්තිය, සරල බාර් ප්‍රස්තාරයක් (Bar Chart) බවට පත් කරමු.

මේ සඳහා අපි Matplotlib සහ Seaborn භාවිතා කරනවා.

import matplotlib.pyplot as plt import seaborn as sns # ප්‍රස්තාරය සඳහා style එකක් යොදාගනිමු. sns.set_style("whitegrid") # ප්‍රස්තාරයේ ප්‍රමාණය (size) තීරණය කරමු. plt.figure(figsize=(15, 8)) # Seaborn භාවිතයෙන් බාර් ප්‍රස්තාරය නිර්මාණය කරමු. # x අක්ෂය සඳහා අංකත්, y අක්ෂය සඳහා එහි වාර ගණනත් යොදාගනිමු. sns.barplot(x=frequency_counts.index, y=frequency_counts.values, palette='viridis') # ප්‍රස්තාරයට මාතෘකා සහ ලේබල එක් කරමු. plt.title('ලොතරැයි අංක වල ව්‍යාප්තිය (Frequency of Lottery Numbers)', fontsize=18) plt.xlabel('අංකය (Number)', fontsize=14) plt.ylabel('ඇදී ඇති වාර ගණන (Frequency)', fontsize=14) # ප්‍රස්තාරය පෙන්වමු. plt.show()

ಈ ප්‍රස්තාරය දිහා බැලූ සැනින් ඔබට පෙනේවි, සමහර බාර් (bars) අනෙක් ඒවාට වඩා උසින් වැඩි බව. එම උසම බාර් වලින් නිරූපණය වෙන්නේ අපේ "Hot Numbers" වන අතර, උසින් අඩුම බාර් වලින් "Cold Numbers" නිරූපණය වේ.


යථාර්ථය: මේ රටා ඇත්තටම නොතිබිය හැක්කේ ඇයි? 🤔

උදාහරණයක් ලෙස, ඔබ කාසියක් 10 වතාවක් උඩ දැමුවොත්, 7 වතාවක් "යට" සහ 3 වතාවක් "උඩ" ලැබෙන්න පුළුවන්. එවිට "යට" යනු "Hot" ප්‍රතිඵලයයි. නමුත් ඔබ එම කාසිය වාර 100,000ක් උඩ දැමුවොත්, ඔබට ලැබෙන ප්‍රතිඵලය "යට" 50,000කට සහ "උඩ" 50,000කට ඉතා ආසන්න වනු ඇත.

ඒ ආකාරයටම, අප සතුව දිනුම් ඇදීම් දහස් ගණනක දත්ත තිබුණත්, එය අහඹු බවේ විශාල චිත්‍රය දෙස බලන විට ඉතා කුඩා නියැදියක් පමණි. එබැවින්, අප දකින මේ රටා, අනාගතය සහතික කරන සත්‍ය රටා වලට වඩා, එම කුඩා නියැදිය තුළ පමණක් පවතින තාවකාලික තත්වයන් විය හැක.

එසේනම්, අපි මේ විශ්ලේෂණය කරන්නේ ඇයි? මක්නිසාද යත්, අපගේ Machine Learning ආකෘතිය නිර්මාණය කර ඇත්තේ දත්ත තුළ ඇති මෙවැනි සංඛ්‍යානමය රටා ඉගෙන ගැනීමටයි. එයට සත්‍යය හෝ අසත්‍යය තේරුම් ගත නොහැක. එය දත්ත විශ්ලේෂණය කර, එම දත්ත මත පදනම්ව වඩාත් සම්භාවිතාවක් ඇති ප්‍රතිඵලය කුමක්දැයි අනුමාන කරයි. එබැවින් මෙම ගවේෂණය, අපගේ ආකෘතියේ "සිතන" ආකාරය තේරුම් ගැනීමට අපට උපකාරී වේ.

« 3 වන ඒකකයට යන්න 5 වන ඒකකයට යන්න »