6 වන ඒකකය: Machine Learning ප්‍රවේශය

අපගේ දත්ත, ස්නායුක ජාලයකට "තේරුම්ගත හැකි" භාෂාවකට පරිවර්තනය කරමු.

නව චින්තනයක්: අනුක්‍රම (Sequences) ලෙස සිතීම 🧠

5 වන ඒකකයේදී අපි හැදූ සරල ආකෘති, සියලුම දත්ත දෙස එකවර බැලුවා. නමුත් ස්නායුක ජාල, විශේෂයෙන්ම අපි භාවිතා කිරීමට යන LSTM (Long Short-Term Memory) ආකෘතිය, එසේ වැඩ කරන්නේ නැහැ. එය හරියට මිනිස් මොළය වගේ, සිදුවීම්වල අනුපිළිවෙල (order of events) ගැන සැලකිලිමත් වෙනවා.

උදාහරණයක් ලෙස, "බල්ලා මිනිහව හැපුවා" සහ "මිනිහා බල්ලව හැපුවා" යන වාක්‍ය දෙකේ වචන ටික එකම වුවත්, ඒවායේ අනුපිළිවෙල වෙනස් නිසා අර්ථය සම්පූර්ණයෙන්ම වෙනස්. LSTM ආකෘතියටත් මේ අනුපිළිවෙල තේරුම් ගැනීමේ විශේෂ හැකියාවක් තිබෙනවා. එම නිසා, අපි අපේ දත්ත, එයට තේරුම් ගත හැකි අනුක්‍රම (sequences) බවට පරිවර්තනය කළ යුතුයි.

මෙම ඒකකයේ අපගේ ඉලක්කය වන්නේ:

  • ආදානය (Input - X): පසුගිය දිනුම් ඇදීම් 10ක ප්‍රතිඵල.
  • ප්‍රතිදානය (Output - y): 11 වන දිනුම් ඇදීමේ ප්‍රතිඵලය.

මේ ආකාරයට දත්ත සකස් කිරීමෙන්, අපි ආකෘතියට උගන්වන්නේ, "මේ වගේ අනුක්‍රමයක් දුටුවිට, ඊළඟට පැමිණීමට වැඩිම ඉඩක් ඇත්තේ මෙවැනි ප්‍රතිඵලයක්" යන්නයි.


පියවර 1: දත්ත Normalization කිරීම

ස්නායුක ජාල ගණිතමය ක්‍රියාවලි මත දැඩිව රඳා පවතී. ඒවා වඩාත් කාර්යක්ෂමව සහ ස්ථාවරව ක්‍රියා කරන්නේ, අප ලබා දෙන සියලුම සංඛ්‍යාත්මක දත්ත 0 සහ 1 අතර කුඩා පරාසයකට පරිවර්තනය කළ විටයි. මෙම ක්‍රියාවලියට Normalization යැයි කියනු ලැබේ.

මෙය හරියට විවිධ රටවල මුදල් වර්ග (රුපියල්, ඩොලර්, යෙන්) එකිනෙක සංසන්දනය කිරීමට පෙර, ඒ සියල්ලම පොදු සම්මතයකට (උදා: රත්තරන් වල වටිනාකමට) පරිවර්තනය කරනවා වැනිය. අපගේ ලොතරැයි අංක (උදා: 1 සිට 40 දක්වා) ද, අපි 0 සහ 1 අතර අගයන් බවට පරිවර්තනය කරමු. මේ සඳහා `scikit-learn` library හි `MinMaxScaler` භාවිතා කරමු.

import pandas as pd from sklearn.preprocessing import MinMaxScaler import numpy as np df = pd.read_csv('lottery_data.csv') number_cols = ['number_1', 'number_2', 'number_3', 'number_4', 'bonus'] # අපට normalize කිරීමට අවශ්‍ය දත්ත ලබා ගනිමු data_to_scale = df[number_cols].values # Scaler එකක් නිර්මාණය කරමු scaler = MinMaxScaler(feature_range=(0, 1)) # දත්ත 0 සහ 1 අතර අගයන් බවට පරිවර්තනය කරමු scaled_data = scaler.fit_transform(data_to_scale) print("මුල් දත්ත (පළමු පේළිය):") print(data_to_scale[0]) print("\\nNormalized දත්ත (පළමු පේළිය):") print(scaled_data[0])

පියවර 2: පුහුණු කිරීමේ අනුක්‍රම (Training Sequences) සකස් කිරීම

දැන් අප සතුව 0 සහ 1 අතර අගයන් බවට පත්කළ දත්ත තිබේ. ඊළඟට, අපි මෙම දත්ත වලින් අපගේ ආදාන (X) සහ ප්‍රතිදාන (y) යුගල නිර්මාණය කළ යුතුය. අපි මෙය කරන්නේ "sliding window" (ලිස්සා යන කවුළුවක්) නම් ක්‍රමවේදයක් මගිනි.

මෙය සිතාගන්න:

  • අපි මුලින්ම දිනුම් ඇදීම් 1 සිට 10 දක්වා දත්ත "කවුළුව" තුළට ගෙන, එය අපේ පළමු ආදානය (X1) ලෙස සලකමු.
  • එයට අදාළ ප්‍රතිදානය (y1) වන්නේ 11 වන දිනුම් ඇදීමේ ප්‍රතිඵලයයි.
  • ඉන්පසු, අපි "කවුළුව" එක පියවරක් ඉදිරියට ගෙන, දිනුම් ඇදීම් 2 සිට 11 දක්වා දත්ත අපේ දෙවන ආදානය (X2) ලෙස සලකමු.
  • එයට අදාළ ප්‍රතිදානය (y2) වන්නේ 12 වන දිනුම් ඇදීමේ ප්‍රතිඵලයයි.

අප සතුව ඇති සම්පූර්ණ දත්ත කට්ටලය අවසන් වන තුරු අපි මෙම ක්‍රියාවලිය නැවත නැවතත් සිදු කරමු.

# අනුක්‍රමයක දිග (පසුගිය දිනුම් ඇදීම් කීයක් සලකනවාද?) SEQUENCE_LENGTH = 10 X = [] y = [] for i in range(SEQUENCE_LENGTH, len(scaled_data)): # ආදානය: i ට පෙර ඇති SEQUENCE_LENGTH ගණනක දත්ත X.append(scaled_data[i-SEQUENCE_LENGTH:i]) # ප්‍රතිදානය: i හි ඇති දත්ත y.append(scaled_data[i]) # Python lists, NumPy arrays බවට පත් කරමු X = np.array(X) y = np.array(y) print("X හි හැඩය (shape):", X.shape) print("y හි හැඩය (shape):", y.shape)
`X.shape` එක තේරුම් ගනිමු:
ඔබට ලැබෙන `X.shape` එක (උදා: `(490, 10, 5)`) මෙසේ තේරුම් ගත හැක:
  • `490`: අප සතුව පුහුණු කිරීමේ උදාහරණ (sequences) 490ක් ඇත.
  • `10`: එක් උදාහරණයක් (sequence එකක්) දිනුම් ඇදීම් 10ක් දිගය.
  • `5`: එක් දිනුම් ඇදීමක අංක 5ක් (features) ඇත.
මෙම 3D ව්‍යුහය, LSTM ආකෘතියට දත්ත ලබා දීම සඳහා පරිපූර්ණව ගැලපේ.

අවසාන ප්‍රතිඵලය: AI ආකෘතියට සූදානම් කළ ආහාර 🍲

සුභ පැතුම්! ඔබ දැන් Machine Learning ව්‍යාපෘතියක ඇති වැදගත්ම සහ අභියෝගාත්මකම පියවරක් සාර්ථකව නිම කර ඇත. අප දැන් සතුව, අපගේ AI ආකෘතියට "ආහාර" ලෙස ලබා දීමට හැකි, පරිපූර්ණව සකස් කළ දත්ත කට්ටල දෙකක් තිබේ:

  • X: අනුක්‍රමික රටා අඩංගු ආදාන දත්ත.
  • y: එම එක් එක් රටාවට අදාළ නිවැරදි පිළිතුරු අඩංගු ප්‍රතිදාන දත්ත.

දැන් අපේ "අමුද්‍රව්‍ය" සියල්ල සූදානම්. ඊළඟ ඒකකයේදී, අපි මෙම අමුද්‍රව්‍ය භාවිතා කර, මේවායින් ඉගෙන ගත හැකි "මොළයක්", එනම් අපේ LSTM ස්නායුක ජාල ආකෘතිය, Keras භාවිතයෙන් ගොඩනගන ආකාරය ඉගෙන ගනිමු.

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