𝐈𝐧𝐟𝐢𝐧𝐢𝐭𝐲 𝐂𝐒
200 subscribers
122 photos
1 video
3 files
34 links
Your daily source for Artificial Intelligence (AI), Machine Learning (ML), Deep Learning, and Computer Science trends. We share coding resources, projects, tech news, and updates.

#Infinitycs
Download Telegram
𝐈𝐧𝐟𝐢𝐧𝐢𝐭𝐲 𝐂𝐒
Photo
Article 8: NumPy සහ Pandas – Data Manipulation Tools 🛠📊


කලින් ලිපි වලින් අපි Machine Learning වලට ඕන කරන Maths සහ Python මූලික කරුණු ඉගෙන ගත්තා. දැන් අපි බලමු ඒ ඉගෙන ගත්තු දේවල් ඇත්තම Data එක්ක පාවිච්චි කරන්නේ කොහොමද කියලා. ML Engineer කෙනෙක් තමන්ගේ කාලයෙන් ලොකු කොටසක් වැය කරන්නේ දත්ත පිරිසිදු කරන්න සහ සකස් කරන්න. ඒ වැඩේ ලේසි කරගන්න පාවිච්චි කරන ප්‍රධානම libraries දෙකක් තමයි මේ.

1. NumPy (Numerical Python) 🔢⚡️

අපි Article 3 එකේදී ඉගෙන ගත්තා මතකද Linear Algebra (Matrices සහ Vectors) ගැන? අන්න ඒ Matrix calculations කරන්න Python වලදි පාවිච්චි කරන්නේ NumPy. ඒත් ඇයි අපි NumPy පාවිච්චි කරන්නේ?

● Speed - සාමාන්‍ය Python Lists වලට වඩා NumPy Arrays සිය ගුණයක් වේගවත්. මොකද මේක run වෙන්නෙ C language එක බේස් කරගෙන.

● Vectorization - ලොකු Data set එකකට එකපාර ගණිතමය ක්‍රියාවන් (එකතු කිරීම්, ගුණ කිරීම් වගේ) කරන්න පුළුවන්.

NumPy වල ප්‍රධාන සංකල්පය වෙන්නේ N-dimensional Array (ndarray). NumPy වල හැමදේම ගබඩා වෙන්නේ Array එකක් විදිහට. මේක තනි පේළියක් (1D), වගුවක් (2D) හෝ ඊට වඩා වැඩි මානයක් (ND) වෙන්න පුළුවන්. 🧊

2. Pandas (Python Data Analysis) 🐼📊

NumPy වලින් mathematical part එක කළාට, දත්ත Excel sheet එකක් වගේ වගුවකට දාලා handle කරන්න පාවිච්චි කරන්නේ Pandas. Pandas වල තියෙන ප්‍රධානම දේවල් දෙක වෙන්නේ Series (මේක හරියට වගුවක තියෙන එක Column එකක් වගේ.) සහ DataFrame (මේක තමයි සම්පූර්ණ වගුව. ML වලදී අපි අපේ මුළු Dataset එකම දකින්නේ DataFrame එකක් විදිහට)

Pandas වලින් කරන්න පුළුවන් දේවල්,

● Data Loading 📥 - CSV, Excel, SQL වැනි ඕනෑම තැනක තියෙන දත්ත කියවන්න පුළුවන්.
● Data Cleaning 🧼 - දත්ත වල තියෙන Null values පිරවීම හෝ අයින් කිරීම.
● Data Filtering 🔍 - අපිට අවශ්‍ය දත්ත විතරක් වෙන් කරලා ගන්න.

මේවා Machine Learning වලට වැදගත් වෙන්නේ ඇයි? 🤔💡

ඔයා ඉස්සරහට ඉගෙන ගන්න Scikit-learn, TensorFlow වගෙ libraries වලට Data input කරන්නේ මේ NumPy Array හෝ Pandas DataFrame විදිහට. ඒ නිසා මේ දෙකේ මූලික කරුණු දැනගන්න එක හරියට අකුරු ඉගෙන ගන්නවා වගේ වැඩක්. 📚

ඊළඟ ආටිකල් එකෙන් (Article 9) අපි කතා කරන්නේ data visualise කරන Matplotlib සහ Seaborn ගැන. 📉🎨 🙊😁

✍️ @TheInfinityAI
3
𝐈𝐧𝐟𝐢𝐧𝐢𝐭𝐲 𝐂𝐒
Article 8: NumPy සහ Pandas – Data Manipulation Tools 🛠📊 කලින් ලිපි වලින් අපි Machine Learning වලට ඕන කරන Maths සහ Python මූලික කරුණු ඉගෙන ගත්තා. දැන් අපි බලමු ඒ ඉගෙන ගත්තු දේවල් ඇත්තම Data එක්ක පාවිච්චි කරන්නේ කොහොමද කියලා. ML Engineer කෙනෙක් තමන්ගේ කාලයෙන්…
Practical Example 💻

අපි බලමු NumPy වලින් Data ටිකක් Create කරලා ඒක Pandas DataFrame එකකට හරවන්නේ කොහොමද කියලා. මේ code එකෙන් අපි කරන්නේ NumPy හරහා random data ටිකක් හදලා, ඒකට නමක් දීලා Pandas DataFrame එකක් බවට පත් කරන එක.

import numpy as np
import pandas as pd

# 1. NumPy පාවිච්චි කරලා 5x3 Matrix එකක් (Random Data) හදමු
data = np.random.rand(5, 3)

# 2. අපේ වගුවේ තීරු වලට (Columns) නම් දෙමු
column_names = ['Sales', 'Profit', 'Cost']

# 3. NumPy Array එක Pandas DataFrame එකකට හරවමු
df = pd.DataFrame(data, columns=column_names)

# 4. අවසාන ප්‍රතිඵලය
print(df)


මොකක්ද මෙතන සිද්ධ වුණේ? 🤔

● import - මුලින්ම අපි libraries දෙක වැඩසටහනට එකතු කරගත්තා. 📦
● np.random.rand(5, 3) - මේකෙන් 0 සහ 1 අතර random අගයන් තියෙන තීරු 3ක සහ පේළි 5ක Array එකක් හැදුවා. 🎲
● pd.DataFrame() - අර තිබ්බ Raw data ටික අපි Pandas වලට දීලා ඒක වගුවක් බවට පත් කළා. දැන් අපිට පුළුවන් මේකේ එක එක Column එක වෙන වෙනම අරන් calculations කරන්න. 📊

ඇයි මේක වැදගත්? 💡

අපි ළඟ තියෙන ඕනෑම සංඛ්‍යාත්මක දත්ත සමූහයක් අපිට කියවන්න ලේසි වගුවක් බවට පත් කරගන්න මේ ක්‍රමය පාවිච්චි කරනවා. ML Model එකකට Data දෙන්න කලින් ඒ Data ටික Clean කරන්න සහ Analyze කරන්න මේ වගුගත කිරීම අනිවාර්යයි.
4
Article 9: Matplotlib and Seaborn – Let's turn data into diagrams 📊📈


Data Visualization කියන්නේ Machine Learning වල තියෙන ඉතාම වැදගත් පියවරක්. මේකෙන් අපිට දත්ත වල තියෙන අසාමාන්‍ය අගයන් (Outliers) සහ දත්ත එකිනෙකට සම්බන්ධ වෙන ආකාරය (Correlation) පැහැදිලිව හඳුනාගන්න පුළුවන්. 🔍

1. Matplotlib 📉

Matplotlib කියන්නේ Python වල තියෙන පරණම සහ ප්‍රධානම Visualization Library එක. මේකෙන් අපිට ඕනම ආකාරයක සරල graph එකක් අපිට අවශ්‍ය විදිහට නිර්මාණය කරගන්න පුළුවන්. 🛠

Matplotlib වලින් කරන්න පුළුවන් දේවල්:

● Line Plots - කාලයත් සමඟ දත්ත වෙනස් වන ආකාරය බලන්න. 📉
● Scatter Plots - data points දෙකක් අතර තියෙන සම්බන්ධය බලන්න. 흩
● Bar Charts - Categories අතර අගයන් සංසන්දනය කරන්න. 📊

2. Seaborn 🌊🎨

Seaborn හදලා තියෙන්නේ Matplotlib තවත් වැඩිදියුණු කරලා. මේක පාවිච්චි කරන්න හරිම ලේසියි වගේම graph එකක් හරිම Aesthetic විදියට නිර්මාණය කරලා දෙනවා. විශේෂයෙන්ම මේක Pandas DataFrame සමඟ ඉතාම හොඳට වැඩ කරනවා. 🐼🤝

Seaborn වල තියෙන විශේෂාංග,

● Heatmaps - data අතර තියෙන Correlation වර්ණ ආධාරයෙන් පෙන්වන්න. 🔥
● Violin Plots - data වල ව්‍යාප්තිය වඩාත් පැහැදිලිව පෙන්වන්න. 🎻
● Pair Plots - Dataset එකක තියෙන හැම variable එකක්ම එකිනෙකට සම්බන්ධ වෙන හැටි එකපාර බලන්න. 🔄

Practical example - Let's Visualise! 💻🔋

අපි හිතමු ඔයාගේ ෆෝන් දෙකක battery level එක දවස පුරා අඩුවෙන විදිහ බලන්න ඕනේ කියලා. අපි ඒක Matplotlib වලින් ඇඳලා බලමු. 📱🔋

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

# Data preparing
data = {
'Hour': [1, 2, 3, 4, 5, 6, 7, 8],
'Samsung_M12': [100, 95, 88, 80, 72, 65, 58, 50],
'Redmi_8': [100, 92, 85, 75, 65, 55, 45, 35]
}
df = pd.DataFrame(data)

# draw a graph using matpotlib and seaborn
plt.figure(figsize=(10, 5))
sns.lineplot(x='Hour', y='Samsung_M12', data=df, label='Samsung M12', marker='o')
sns.lineplot(x='Hour', y='Redmi_8', data=df, label='Redmi 8', marker='s')

# enter details
plt.title('Battery Drain Over Time')
plt.xlabel('Hours Used')
plt.ylabel('Battery Percentage (%)')
plt.legend()
plt.grid(True)

# display
plt.show()


මේවා Machine Learning වලට වැදගත් වෙන්නේ ඇයි? 🤖💡

● EDA (Exploratory Data Analysis) - Model එකක් හදන්න කලින් දත්ත වල ස්වභාවය තේරුම් ගන්න මේ graphs අනිවාර්යයෙන්ම ඕනේ. 🔎
● Results Presentation - ඔයා හදපු Model එකේ success rate එක අනිත් අයට පෙන්වන්න වෙන්නේ මේ වගේ රූප සටහන් වලින්. 🏆


මෙතනින් Phase 2 අවසන් කරනවා! 🎉 අපි දැන් Python, NumPy, Pandas, සහ Visualization (Matplotlib/Seaborn) ගැන මූලික දැනුම ලබාගෙන ඉවරයි. 🎓 ඊළඟ ආටිකල් එකෙන් (Article 10) අපි පටන් ගන්නේ Phase 3: Data Mastery. එතනදී අපි බලමු SQL, NoSQL සහ විවිධ Data Sources වලින් ML වලට දත්ත ගන්නේ කොහොමද කියලා. 📂🗄 🙊😁

✍️ @TheInfinityAI
4
Article 10: Data Sources – Let's identify the sources of data flow 🌐


කලින් පියවරවලදී අපි දත්ත හසුරුවන හැටි ඉගෙන ගත්තා. හැබැයි ප්‍රායෝගික ලෝකයේදී දත්ත අපිට නිකන්ම DataFrame එකක් විදිහට ලැබෙන්නේ නැහැ. දත්ත තියෙන්නේ විවිධ තැන්වල විවිධ ආකාරවලින්. ML Engineer කෙනෙක් විදිහට ඔයා මේ Data Sources ගැන හොඳින් දැනගන්න ඕනේ. අද අපි කතා කරන්නේ දත්ත එක්රැස් කරගන්නා ප්‍රධාන ක්‍රම සහ ස්ථාන ගැන. 📂🗄

1. Databases 🗄

බොහෝ සමාගම්වල දත්ත ගබඩා කරලා තියෙන්නේ Databases ඇතුලෙ. මේවා ප්‍රධාන වර්ග දෙකක් තියෙනවා,

● SQL (Relational) - දත්ත Tables විදියට පිළිවෙලකට ගබඩා කරලා තියෙනවා. (MySQL, PostgreSQL)
● NoSQL (Non-Relational) - පිළිවෙලකට නැති හෝ Documents ආකාරයෙන් ඇති දත්ත. (MongoDB)

2. APIs (Application Programming Interfaces) 🔌

Internet එකේ තියෙන වෙනත් සේවාවන්ගෙන් (කාලගුණ දත්ත, කොටස් වෙළඳපොළ දත්ත) සජීවීව දත්ත ලබාගන්න APIs පාවිච්චි කරනවා. Python වල requests library එක හරහා අපිට මේ දත්ත ලබාගන්න පුළුවන්.

3. Data Formats


අපිට දත්ත ලැබෙන පොදු ගොනු වර්ග කිහිපයක් තියෙනවා,

● CSV - ඉතාම සරල Excel වැනි වගු ආකාරයේ දත්ත.
● JSON - Internet එක හරහා දත්ත හුවමාරු කිරීමේදී පාවිච්චි වන Key-Value යුගල සහිත දත්ත.
● Parquet - Big Data ඉතා වේගයෙන් හැසිරවීමට පාවිච්චි කරන නවීන format එකක්.

Article 11: Data Cleaning – Let's clean up junk data 🧹


අපි data හොයාගත්තට පස්සේ වැදගත්ම දේ තමා ඒවා පිරිසිදු කිරීම . වැරදි දත්ත මත හදන Model එකක් කවදාවත් නිවැරදි වෙන්නේ නැහැ (Garbage In, Garbage Out 🗑➡️🚫 වැරදි දත්ත මත හදන Model එකක් කවදාවත් නිවැරදි ප්‍රතිඵල දෙන්නේ නැහැ.).

1. Handling Missing Data

දත්තවල සමහර තැන්වල අගයන් නැති වෙන්න පුළුවන් (Null values). මේවා පාලනය කරන්න ක්‍රම කිහිපයක් තියෙනවා:

● Dropping - අගයන් නැති පේළි සම්පූර්ණයෙන්ම අයින් කිරීම.
● Imputation - හිස් තැන්වලට සාමාන්‍ය අගය (Mean) හෝ මැද අගය (Median) යෙදීම.

2. Handling Outliers

අනෙක් දත්තවලට වඩා හුඟක් වෙනස් අගයන් (උදා: හැමෝම අවුරුදු 20-30 අතර වෙද්දී එක්කෙනෙක් අවුරුදු 200ක් විතර වීම) අඳුරගෙන ඒවා ඉවත් කළ යුතුයි.


ඒත් Model එකකට දත්ත දෙන්න කලින් ඒවා මැෂින් එකට තේරෙන විදිහට සකස් කරන්න ඕනේ. ඊලග ආටිකල් එකෙන් (Article 12) අපි ඒ ගැන (Preprocessing Techniques) ගැන කතාකරමු.

✍️ @TheInfinityAI
2
𝐈𝐧𝐟𝐢𝐧𝐢𝐭𝐲 𝐂𝐒
Photo
Article 12: Data Preprocessing & Feature Engineering - දත්ත සකස් කිරීම ⚙️


මේ පියවර තමයි ඔයාගේ Machine Learning මොඩල් එකක සාර්ථකත්වය තීරණය කරන ප්‍රධානම සාධකය. Data Cleaning වලට පස්සේ ඒ දත්ත මැෂින් එකකට තේරුම් ගත හැකි සහ ගණිතමය වශයෙන් ගැලපෙන ආකාරයට හැඩගැස්වීම මෙතනදී සිදු වෙනවා. ඒ ක්‍රියාවලිය කොටස් කීපයකට බෙදන්න පුළුවන්, 🧪

1. Feature Scaling (දත්ත සමාන පරිමාණයකට ගැනීම) ⚖️

Machine Learning Algorithms වැඩි හරියක් වැඩ කරන්නේ ගණිතමය දුර (Distance) මැනීම මත. අපි මෙහෙම හිතමු, අපේ Dataset එකේ වයස (අවුරුදු 0-100) සහ ආදායම (රුපියල් 50,000-500,000) කියලා columns දෙකක් තියෙනවා නම් model එක හිතන්නේ ආදායම කියන column එක වඩා වැදගත් කියලා මොකද ඒකෙ අගයන් විශාල නිසා. මේකට තියෙන විසදුම තමා මේ දත්ත දෙකම එකම පරාසයකට (උදා: 0 සිට 1 දක්වා) අරගෙන එන එක. මේකට ප්‍රධාන ක්‍රම දෙකක් තියෙනවා,

● Normalization (Min-Max Scaling) - දත්ත සියල්ල 0 සහ 1 අතර පරාසයකට පත් කරන එක. Image Processing වලදී මේක ගොඩක් පාවිච්චි කරනවා. 📉🖼

● Standardization (Z-score Normalization) - දත්තවල සාමාන්‍ය අගය (Mean) 0 කරලා, සම්මත අපගමනය (Standard Deviation) 1ක් වෙන විදියට හදනවා. ගොඩක් ML ඇල්ගොරිතම් වලට සුදුසුම ක්‍රමය මේක. 📊

2. Encoding Categorical Data (අකුරු ඉලක්කම් වලට හැරවීම) 🤔💭

Model එකකට "Colombo", "Kandy", "Galle" වගේ වචන තේරෙන්නේ නැ. ඒවා ඉලක්කම්වලට හරවන්න ක්‍රම දෙකක් තියෙනවා,

● Label Encoding - අකුරුවලට අනුපිළිවෙලක් තියෙනවා නම් (උදා: Low=0, Medium=1, High=2) මෙය පාවිච්චි කරනවා.
● One-Hot Encoding - අකුරුවලට විශේෂ අනුපිළිවෙලක් නැත්නම් (උදා: නගරවල නම්), එක් එක් නගරය සඳහා වෙනම column එකක් හදලා 0 සහ 1 ලෙස සලකුණු කරනවා.

3. Feature Selection (වැදගත්ම දේ තෝරා ගැනීම) 🎯

අපිට තියෙන හැම දත්තයක්ම මොඩල් එකට වැඩක් වෙන්නේ නැහැ. උදාහරණයක් විදියට ගෙදරක මිල අනුමාන කරද්දී ගෙදර පාට කියන එකට වඩා වර්ග අඩිය සහ කාමර ගණන වගේ දේවල් වැදගත් වෙනවා. අනවශ්‍ය දත්ත ඉවත් කිරීමෙන් මොඩල් එක වේගවත් වෙනවා වගේම ැඑක ඕනෑවට වඩා සංකීර්ණ වෙන එක (Overfitting) වළක්වා ගන්න පුලුවන්. 🔍🛠🧹

4. Feature Engineering (අලුත් දත්ත නිර්මාණය)
🎨🏗

මේක තමයි ML Engineer කෙනෙකුගේ නිර්මාණශීලීත්වය පෙන්වන තැන. තියෙන දත්තවලින් වඩාත් අර්ථවත් දත්තයක් අලුතින් හදාගැනීම මේකෙන් අදහස් කරනවා. උදාහරණයක් විදියට, අපිට login time සහ logout time තියෙනවා නම් ඒ දෙක අඩු කරලා Duration කියන අලුත් feature එක හදාගන්න පුළුවන්. 💡

5. Handling Imbalanced Data (අසමතුලිත දත්ත පාලනය) ⚖️🚨

සමහර වෙලාවට අපේ දත්තවල එක පැත්තක් වැඩියි. උදාහරණයක් විදියට බැංකු වංචා (Fraud detection) dataset එකක 99% ක්ම හොඳ ගනුදෙනු වන අතර වංචා තියෙන්නෙ 1% ක් වගේ. Model එකට මේ 1% අඳුරගන්න අමාරුයි. මෙ වගේ වෙලාවට SMOTE වගේ තාක්ෂණයන් පාවිච්චි කරලා අඩු දත්ත ප්‍රමාණය කෘතිමව වැඩි කරනවා. 🕵️‍♂️🤖🔄


හොඳ Preprocessing step එකක් කියන්නේ model එකට ඉගෙන ගන්න ලේසි පිරිසිදු පාරක් හදලා දෙනවා වගේ වැඩක්. මේ පියවර නිවැරදිව කළොත් සරල මොඩල් එකකින් වුණත් ඉතා හොඳ ප්‍රතිඵල ගන්න පුළුවන්. ඊලග ආටිකල් එකෙන් ( (Article 13) අපි පටන් ගන්නේ Phase 5: Machine Learning Core. එතනදී අපි බලමු ML වල තියෙන ප්‍රධාන learning methods එකිනෙකට වෙනස් වෙන්නේ කොහොමද කියලා. 🧠⏭️ 🙊😁

✍️ @TheInfinityAI
3
This media is not supported in your browser
VIEW IN TELEGRAM
👾1
𝐈𝐧𝐟𝐢𝐧𝐢𝐭𝐲 𝐂𝐒
Photo
Article 13: Machine Learning යනු කුමක්ද සහ ප්‍රධාන වර්ග 🤖


Machine Learning (ML) කියන්නේ පරිගණකයකට පැහැදිලිවම උපදෙස් (Explicit Programming) නොදී දත්ත ඇසුරෙන් තනියම ඉගෙන ගැනීමට සහ තීරණ ගැනීමට හැකියාව ලබා දීමයි. ML ප්‍රධාන ආකාර 5කට බෙදන්න පුළුවන් 💻🧠

1. Supervised Learning 👨‍🏫🍎

මේක හරියට ගුරුවරයෙක් යටතේ ඉගෙන ගන්නවා වගේ දෙයක්. අපි මොඩල් එකට දත්ත (Input) වගේම ඒකට අදාළ නිවැරදි උත්තරත් (Label) ලබා දෙනවා. (Regression සහ Classification.)

2. Unsupervised Learning 🔍🕵️‍♂️

මේකෙදී අපි මොඩල් එකට උත්තර දෙන්නේ නැහැ. මොඩල් එක කරන්නේ දත්ත අතර තියෙන සමානකම් සහ රටාවන් (patterns) තනියම හොයාගෙන ඒවා කාණ්ඩ කරන එක.

3. Semi-supervised Learning 🧪⚖️


මේක Supervised Learning සහ Unsupervised Learning ක්‍රම දෙකේම මිශ්‍රණයක්. අප ලග තියෙන දත්තවලින් කොටසකට විතරක් labels තියෙන අවස්තාවල මේක පාවිච්චි කරනවා.

5. Reinforcement Learning 🎮🏆

මෙය හරියට වීඩියෝ ගේම් එකක් ගහන්න ඉගෙන ගන්නවා වගේ වැඩක්. model එක යම් ක්‍රියාවක් සිදු කලාම ඒක නිවැරදි නම් Rewards සහ වැරදි නම් Penalties ලැබෙනවා. ඒ අනුව model එක කාලයත් සමඟ හොඳම තීරණ ගන්න ඉගෙන ගන්නවා.

අපි Python වලින් ML කරද්දී වැඩිපුරම පාවිච්චි කරන්නේ Scikit-learn කියන library එක. ඕනම ML Project එකක තිබිය යුතු සම්මත පියවර කිහිපයක් තියෙනවා,

● Data Loading - Pandas හරහා data set එක මොඩල් එකට ලබා දීම.
● Train-Test Split - අපේ data වලින් කොටසක් (සාමාන්‍යයෙන් 80%) මොඩල් එක Train කරන්න සහ ඉතිරි කොටස මොඩල් එක test කරන්න යොදාගන්නවා.
● Model Selection - Data වල ස්වභාවය අනුව ගැලපෙන algorithm එකක් තෝරා ගැනීම.
● Tuning (Hyperparameter Tuning) - මොඩල් එකේ තියෙන විවිධ Settings වෙනස් කරමින් accuracy වැඩි කිරීම.
● Prediction - අවසානයේදී අලුත් දත්ත ලබා දීලා මොඩල් එක හරහා අනුමාන ලබා ගැනීම.

අපි ML වල theoritical base එක සාර්ථකව අවසන් කරලා ඉන්නේ. 🎉🎓 ඊලග ආටිකල් එකෙන් (Article 14) අපි පටන් ගන්නේ Phase 6: Supervised Learning (Deep Dive). එතනදී අපි බලමු Classification යටතේ තියෙන KNN, Logistic Regression සහ SVM වැඩ කරන්නේ කොහොමද කියලා. 🧠⏭️ 🙊😁

✍️ @TheInfinityAI
3
🎓 Student-Only Offer – Important Notice 🎓

To claim it successfully, you must use a valid student email address 📧 or complete the student status verification process

📩 After registering, please check your email carefully for the claim instructions.
This offer is limited & time-sensitive, so redeem it as soon as you receive the email.
⚠️ Don’t forget to check your Spam / Junk folder as well.


🔗 Official student offer details: Click here

🤝 If you face any issues with student email access, verification, or the claiming process, feel free to reach out. 👉@Hasindu_Lakshan

🚀 Don’t miss out — claim your offer early!

@TheInfinityAI
3
1
Classification කියන්නේ දේවල් කාණ්ඩ වලට බෙදන එක. මේක Supervised Learning වල තියෙන ප්‍රධානම කොටසක්. මෙතනදී අපි කරන්නේ අලුතින් ලැබෙන දත්තයක් (Data point) කලින් හඳුනාගත් කාණ්ඩයකට (Class/Category) අයිති කරන්නේ කොහොමද කියලා මොඩල් එකට උගන්වන එකයි.

Article 14: K-Nearest Neighbours (KNN) – Let’s learn from neighbours 🏘🤝


KNN කියන්නේ Machine Learning වල තියෙන සරලම ඒත් හරිම බලසම්පන්න algorithm එකක්. මේකේ විශේෂත්වය තමයි මේක Lazy Learner කෙනෙක් වීම. ඒ කියන්නේ මෙයා කලින්ම මොඩල් එකක් හදලා තියාගන්නේ නැහැ, අලුත් දත්තයක් ආපු වෙලාවට විතරයි වැඩ පටන් ගන්නේ. මේකේ තියෙන Intuition එක මොකද්ද? මේක සරලව තේරුම් ගමු. ඔයා අලුත් පළාතකට පදිංචියට ගියොත් ඒ පැත්තේ මිනිස්සු මොන වගේද කියලා දැනගන්නේ ඔයාගේ ගේ වටේ ඉන්න අසල්වැසියෝ කීප දෙනෙක් (K=5) දිහා බලලනේ. අන්න ඒ වගේ තමයි KNN. අලුත් data point එකක් ආවම ඒකට ලඟින්ම ඉන්න අසල්වැසියෝ k ප්‍රමාණයක් බලලා ඒ වැඩි දෙනෙක් අයිති කාණ්ඩයට අලුත් එකත් දානවා. 😴⚡️🗳

01. The Mathematical Foundation - KNN වැඩ කරන්නේ සම්පූර්ණයෙන්ම දුර මැනීම මතයි. 📐🔢

I. Minkowski Distance (General equation) - අපි හැමෝම දන්න පයිතගරස් ප්‍රමේයයෙන් එන Euclidean දුර කියන්නේ ඇත්තටම Minkowski distance එකේ විශේෂ අවස්ථාවක්.

D(x,y) = (∑ᵢᷠ₌₁ ∣ xᵢ − yᵢ ∣ ᵖ)⁽¹/ᵖ⁾ (සමීකරණේ පැහැදිලි නැත්නම් මෙතනින් බලන්න)

p = 1 වෙද්දි මේක Manhattan Distance (L1 Norm) වෙනවා.
p = 2 වෙද්දි මේක Euclidean Distance (L2 Norm) වෙනවා.

II. Hamming Distance - ප්‍රොජෙක්ට් වලදී වචන (Categorical data) අතර වෙනස මනින්න පාවිච්චි කරන්නේ මේක. මේකෙන් බලන්නේ අගයන් දෙකක් එකිනෙකට වෙනස් වන ස්ථාන ගණන.

02. Engineering Challenges & Advanced Optimisation 🏗⚙️

දැන් අපි බලමු ඇත්තම KNN පාවිච්චි කරද්දී මුහුණ දෙන ප්‍රශ්න සහ ඒවා විසඳන හැටි.

I. The Curse of Dimensionality - දත්ත වල තීරු (Features/Dimensions) ගණන වැඩි වෙද්දී ලග කියන සංකල්පය නැති වෙලා යනවා. මොකද හැම දත්තයක්ම එකිනෙකෙන් හුඟක් ඈතින් පිහිටන නිසා. මේක විසඳන්න අනිවාර්යයෙන්ම PCA (Dimensionality Reduction) වගේ තාක්ෂණයක් පාවිච්චි කරලා වැදගත්ම features ටික විතරක් ඉතිරි කරගන්න ඕනේ.

II. Feature Scaling - මේක අනිවාර්ය පියවරක්. KNN සම්පූර්ණයෙන්ම දුර මත පදනම් වන නිසා අගයන් විශාල දත්ත (උදා: ආදායම) අගයන් කුඩා දත්ත (උදා: වයස) වලට වඩා බලපෑමක් කරනවා. ඒ නිසා Standardization (Z-score scaling) මගින් දත්ත සියල්ලම එකම මට්ටමකට ගෙන ඒම අනිවාර්යයි.

III. Speed Optimization (KD-Trees & Ball Trees) - දත්ත මිලියන ගණනක් තියෙද්දි හැම එකකටම දුර මනින එක (O(n)) time wasting. ඒ නිසා අපි data store කරන්නේ Trees ව්‍යුහයන් වල.
● KD-Tree - data ටික dimension කිපයක් අනුව බෙදලා වෙන් කරනවා.
● Ball Tree - data වලට dimension ගොඩක් තියෙන අවස්ථාවලදී (High dimensions) වඩාත් කාර්යක්ෂමයි.

03. Choosing the K: Hyperparameter Tuning 🎯🔧

K අගය තෝරා ගැනීම හරිම වැදගත්.
● Small K (e.g., K=1) - මේකේදී Noise වලට හුඟක් සංවේදීයි (Overfitting).
● Large K - මේකෙදී patterns මග හැරෙන්න පුළුවන් (Underfitting).

හොඳම K අගය හොයාගන්න අපි Square root of N (දත්ත ගණන) පාවිච්චි කරනවා නැත්නම් Cross-validation හරහා check කරලා බලනවා.

අද අපි KNN සංකල්පයේ ඉදලා KD-Trees සහ Minkowski distance වගේ maths කොටස් දක්වාම කතා කළා. 🎓 ඊලග ආටිකල් එකෙන් (Article 15) අපි කතා කරන්නේ probability base කරගත්තු algorithm එකක් වෙන Logistic Regression ගැන. 📉🧠 🙊😁

✍️ @TheInfinityAI
2
Article 15: Logistic Regression – Make decisions with probability 📈🎲


මුලින්ම මේ නම ගැන පොඩි පැහැදිලි කිරීමක් කරන්න ඕනේ. මේකේ නමට Regression කෑල්ලක් තිබුණට මේක පාවිච්චි කරන්නේ Classification සඳහා. මේකේ පදනම වැටෙන්නේ Statistics සහ Probability මත. මේකේ Intuition එක මොකද්ද කියලා සරලව තේරුම් ගමු. අපි මෙහෙම හිතමු, ඔයාට ලැබෙන මැසේජ් එකක් Scam එකක්ද නැද්ද කියලා තීරණය කරන්න Probability ඕනේ වෙනවා. උදාහරණයක් විදිහට මැසේජ් එකක් Scam එකක් වෙන්න තියෙන ඉඩ 0.85 (85%) ක් නම් අපිට කියන්න පුළුවන් ඒක Scam එකක් කියලා. 0.5 ට වඩා අඩු නම් ඒක Legit මැසේජ් එකක්. 📧⚖️

01. The Sigmoid Function 📉

අපි Linear Regression වලදී ඉගෙන ගත්ත y = mx + c සමීකරණයෙන් ඕනෑම අගයක් ලැබෙන්න පුළුවන් (-∞ සිට +∞ දක්වා). හැබැයි Probability එක තියෙන්න ඕනේ 0 සහ 1 අතර විතරයි. අන්න ඒ නිසයි අපි Sigmoid (Logistic) Function එක පාවිච්චි කරන්නේ.

σ(z) = (1 / (1 + e⁻ᶻ))

මෙතැනදී z = β₀ + β₁x₁ + … + βₙxₙ වෙනවා. ඕනම විශාල හෝ කුඩා z අගයක් මේ function එක ඇතුළට දැම්මම ඒක 0 සහ 1 අතර අගයකට squash වෙනවා.

02. The Mathematical Deep Dive 🧬🧮

දැන් අපි බලමු ඇයි අපි මේකට සාමාන්‍ය Linear Regression වල පාවිච්චි කරන Mean Squared Error (MSE) පාවිච්චි නොකරන්නේ කියලා. 🤔

I. Why not MSE? 🎢

Logistic Regression වලදී MSE පාවිච්චි කළොත් ලැබෙන Cost Function එක Non-Convex එකක් වෙනවා. ඒ කියන්නේ ඒකේ ගොඩක් Local Minima තියෙන්න පුළුවන්. එතකොට Gradient Descent වලට නියම Global Minimum එක හොයාගන්න බැරිව හිර වෙන්න පුළුවන්.(තේරුනේ නෑ නේද? ඉන්න පැහැදිලි කරන්නම්)

👉 Minima කියන්නේ Cost එක එහෙමත් නැත්නම් Error එක අඩුම තැන. Local Minima කියන්නේ අපි සලකන සම්පූර්ණ surface එකේ පොඩි ප්‍රදේශයක තියෙන ගැඹුරුම තැන. Global Minimum කියන්නේ සම්පූර්ණ surface එකම බලද්දී ලැබෙන අඩුම තැන. එතකොට Gradient Descent කියන්නේ Error එක අඩුවෙන දිශාවට step by step යන algorithm එක.

දැන් මොකද්ද Problem එක? Gradient Descent algorithm එක Local Minima එකකට ගියොත්, Gradient = 0 වෙනවා එතකොට Algorithm එක හිතනවා “අහ්, minimum එක හම්බුණා” කියලා, එත් ඒක Global Minimum නෙවෙයි කියලා algorithm එක දන්නේ නෑ. 🛑

එක නිසා Logistic Regression වලදී MSE පාවිච්චි කළොත් Cost Function එක Non-Convex වෙනවා. Non-Convex senario එකකදී Local Minima ගොඩක් තියෙන නිසා Gradient Descent එක Local Minima එකක හිර වෙලා True Global Minimum එක miss වෙනවා.

II. Binary Cross-Entropy (Log-Loss) 🪵📉

මේ ප්‍රශ්නය විසඳන්න අපි පාවිච්චි කරන්නේ Log-Loss function එක. මේක පදනම් වෙන්නේ Maximum Likelihood Estimation (MLE) කියන Statistical concept එක මත.

J(θ) =− (1 / m)∑ᵢͫ₌₁[y⁽ⁱ⁾log(ŷ⁽ⁱ⁾) + (1 − y⁽ⁱ⁾)log(1 −ŷ⁽ⁱ⁾)] (සමීකරණේ පැහැදිලි නැත්නම් මෙතනින් බලන්න)

● y = 1 නම් (උදා: Scam) පළවෙනි කොටස විතරක් වැඩ කරනවා.
● y = 0 නම් (උදා: Legit) දෙවෙනි කොටස විතරක් වැඩ කරනවා.
● මැෂින් එක වැරදි අනුමානයක් කළොත් මේ function එක හරහා ලැබෙන Loss එක ඉතා විශාල වෙනවා.

03. Regularization - Let's control overfitting 🛡⚙️

දත්ත වල තියෙන හැම පොඩි දෙයක්ම කටපාඩම් කරන්න ගියොත් අපේ මොඩල් එක අසාර්ථක වෙනවා. ඒක නවත්තන්න අපි සංකීර්ණ weights වලට changes කරනවා.

● L1 Regularization (Lasso) - සමහර අනවශ්‍ය features වල weights බින්දුව කරනවා. (Feature selection වලට වැදගත්).

● L2 Regularization (Ridge) - weights වල අගයන් කුඩා කරලා මොඩල් එකේ සංකීර්ණ බව අඩු කරනවා.

04. Decision Boundary 📏🛣

අපි සම්භාවිතාව 0.5 ට වඩා වැඩිනම් එක පැත්තකටත් අඩුනම් අනිත් පැත්තකටත් දානවා. ඒ මැදින් ඇඳෙන රේඛාව තමයි Decision Boundary එක. Logistic Regression වලදී මේ මායිම නිතරම Linear එකක් වෙනවා.

අද අපි කතා කළේ දත්තයක සම්භාවිතාව හොයලා ඒක වර්ගීකරණය කරන හැටි. 🎓 ඊලග ආටිකල් එකෙන් (Article 16) අපි කතා කරන්නේ සංකීර්ණ දත්ත වෙන් කරන්න පුළුවන් Support Vector Machines (SVM) ගැන. 🧠⏭️ 🙊😁

✍️ @TheInfinityAI
3