8. Machine Learning — مشین لرننگ
Difficulty: Advanced — اعلیٰ
Time: ~40 minutes
Importing — درآمد
درآمد {
نمپائی, پانڈاز,
درجہ_بندی, ریگریشن, ڈیٹا,
ترتیبی_ماڈل, گھنی, اخراج,
بڑا_لسانی_ماڈل
} سے "اردو/ذہین";
اردو:
درجہ_بندیاورریگریشنکے لیےpip install scikit-learn۔ نیورل نیٹ ورک کے لیےpip install tensorflow۔ LLM کے لیےpip install llama-cpp-python۔
NumPy — نمپائی
Numerical arrays and math operations:
متغیر نپ = نیا نمپائی();
// Create arrays
متغیر ا = نپ.سرنی([1, 2, 3, 4, 5]);
متغیر صفر_م = نپ.صفر([3, 3]); // 3×3 zeros
متغیر ایک_م = نپ.ایک([2, 4]); // 2×4 ones
متغیر حد_م = نپ.ترتیب(0, 10, 2); // [0, 2, 4, 6, 8]
// Statistics
لکھو(نپ.مجموع(ا)); // 15.0
لکھو(نپ.اوسط(ا)); // 3.0
لکھو(نپ.زیادہ(ا)); // 5.0
لکھو(نپ.کم(ا)); // 1.0
// Math
لکھو(نپ.لاگ(ا)); // natural log element-wise
لکھو(نپ.مطلق(نپ.سرنی([-1, -2, 3])));
// Linear algebra
متغیر v1 = نپ.سرنی([1, 2, 3]);
متغیر v2 = نپ.سرنی([4, 5, 6]);
لکھو(نپ.جوڑ(v1, v2)); // dot product: 32.0
// Reshape
متغیر فلیٹ = نپ.ترتیب(0, 9);
متغیر گرڈ = نپ.شکل_بدلو(فلیٹ, [3, 3]);
| Method | Description |
|---|---|
.سرنی(data) |
Create array from list |
.صفر(shape) |
Zeros array |
.ایک(shape) |
Ones array |
.ترتیب(start, stop, step) |
Range array |
.شکل_بدلو(a, shape) |
Reshape |
.مجموع(a) |
Sum |
.اوسط(a) |
Mean |
.زیادہ(a) |
Max |
.کم(a) |
Min |
.جوڑ(a, b) |
Dot product |
.لاگ(a) |
Natural log |
.مطلق(a) |
Absolute value |
Pandas — پانڈاز
Tabular data (DataFrames):
متغیر پڈ = نیا پانڈاز();
// Create DataFrame
متغیر جدول_م = پڈ.جدول({
نام: ["احمد", "فاطمہ", "علی"],
نمبر: [85, 92, 78],
شہر: ["کراچی", "لاہور", "کراچی"]
});
لکھو(لمبائی(جدول_م)); // 3
// Access columns (standard Pandas notation)
لکھو(جدول_م["نمبر"].mean());
لکھو(جدول_م["نمبر"].max());
// Filter rows
متغیر اچھے = جدول_م[جدول_م["نمبر"] > 80];
لکھو(لمبائی(اچھے)); // 2
// Read/write CSV
متغیر ڈیٹا_م = پڈ.csv_پڑھو("طلباء.csv");
پڈ.csv_لکھو(جدول_م, "نتیجہ.csv");
// Series
متغیر سیریز_م = پڈ.سیریز([10, 20, 30], نام="اسکور");
// Merge
متغیر ملاپ_م = پڈ.ملاؤ(جدول_م, سیریز_م.to_frame(), on="نام");
| Method | Description |
|---|---|
.جدول(dict, ستون) |
Create DataFrame |
.csv_پڑھو(path) |
Read CSV |
.csv_لکھو(df, path) |
Write CSV |
.excel_پڑھو(path) |
Read Excel |
.excel_لکھو(df, path) |
Write Excel |
.ملاؤ(left, right) |
Merge DataFrames |
.سیریز(data, نام) |
Create Series |
Data Preprocessing — ڈیٹا تیاری
متغیر X = [[1, 2], [3, 4], [5, 6], [7, 8]];
متغیر y = [0, 0, 1, 1];
// Train/test split — تقسیم (returns a list of 4 arrays)
متغیر تقسیم_م = ڈیٹا.تقسیم(X, y, جانچ=0.25, بیج=42);
متغیر X_ٹریننگ = تقسیم_م[0]; // training features
متغیر X_جانچ = تقسیم_م[1]; // test features
متغیر y_ٹریننگ = تقسیم_م[2]; // training labels
متغیر y_جانچ = تقسیم_م[3]; // test labels
// Normalise (zero mean, unit variance)
متغیر X_معمول = ڈیٹا.معمول(X);
// One-hot encode labels
متغیر y_کوڈ = ڈیٹا.بائنری(["بلی", "کتا", "بلی", "کتا"]);
// Read CSV as matrix
متغیر df = ڈیٹا.پڑھو_csv("ڈیٹا.csv");
اردو:
ڈیٹا.تقسیم()چار فہرستیں واپس کرتا ہے[X_ٹریننگ, X_جانچ, y_ٹریننگ, y_جانچ]— انڈیکس سے حاصل کریں۔
Classification — درجہ بندی
Predict a category from features using scikit-learn:
متغیر X = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10], [11, 12]];
متغیر y = [0, 0, 0, 1, 1, 1];
متغیر درجہ_بند = نیا درجہ_بندی("جنگل"); // random forest
درجہ_بند.سیکھیں(X, y);
متغیر پیش_گوئی_م = درجہ_بند.پیش_گوئی([[2, 3], [10, 11]]);
لکھو(پیش_گوئی_م[0]); // 0 (class 0)
لکھو(پیش_گوئی_م[1]); // 1 (class 1)
متغیر درستگی_م = درجہ_بند.درستگی(X, y);
لکھو(درستگی_م); // 1.0 (100% on training data)
Available algorithms — الگورتھم:
| Urdu | Description |
|---|---|
"جنگل" |
Random Forest (default — good general purpose) |
"لاجسٹک" |
Logistic Regression (fast, linear) |
"ایس_وی_ایم" |
Support Vector Machine |
"پڑوسی" |
K-Nearest Neighbors |
"درخت" |
Decision Tree |
"ترقی" |
Gradient Boosting |
// Switch algorithm easily
متغیر درجہ_بند2 = نیا درجہ_بندی("ایس_وی_ایم");
متغیر درجہ_بند3 = نیا درجہ_بندی("پڑوسی");
Regression — ریگریشن
Predict a number from features:
// Training data: house size → price
متغیر X = [[50], [75], [100], [125], [150]];
متغیر y = [50000, 75000, 100000, 125000, 150000];
متغیر رگریشن_م = نیا ریگریشن("خطی");
رگریشن_م.سیکھیں(X, y);
متغیر پیش_گوئی_م = رگریشن_م.پیش_گوئی([[200]]);
لکھو(پیش_گوئی_م[0]); // ~200000
Available algorithms:
| Urdu | Description |
|---|---|
"خطی" |
Linear Regression (default) |
"ridge" |
Ridge (L2 regularization) |
"lasso" |
Lasso (L1 regularization) |
"جنگل" |
Random Forest Regressor |
Neural Networks — نیورل نیٹ ورک (TensorFlow/Keras)
Requires: pip install tensorflow
درآمد { ترتیبی_ماڈل, گھنی, اخراج, بیچ_ضابطہ } سے "اردو/ذہین";
درآمد { نمپائی } سے "اردو/ذہین";
متغیر نپ = نیا نمپائی();
متغیر X = نپ.سرنی([[0, 0], [0, 1], [1, 0], [1, 1]]);
متغیر y = نپ.سرنی([0, 1, 1, 0]); // XOR
// Build model
متغیر ماڈل_م = نیا ترتیبی_ماڈل();
ماڈل_م.شامل_کریں(نیا گھنی(16, فعالیت="relu"));
ماڈل_م.شامل_کریں(نیا اخراج(0.2)); // 20% dropout
ماڈل_م.شامل_کریں(نیا گھنی(1, فعالیت="sigmoid"));
// Compile
ماڈل_م.مرتب_کریں(
مرتب_کنندہ="adam",
نقصان="binary_crossentropy",
پیمانے=["accuracy"]
);
// Train
ماڈل_م.سیکھیں(X, y, دور=100, خاموش=سچ);
// Predict
متغیر نتیجہ = ماڈل_م.پیش_گوئی(X);
لکھو(نتیجہ);
// Save and load
ماڈل_م.محفوظ("ماڈل.h5");
متغیر لوڈ_ماڈل = ترتیبی_ماڈل.لوڈ("ماڈل.h5");
Available Layers — پرتیں
| Urdu | English | Use |
|---|---|---|
گھنی(units, فعالیت) |
Dense | Fully connected layer |
اخراج(شرح) |
Dropout | Prevent overfitting |
ایل_ایس_ٹی_ایم(units) |
LSTM | Sequence data |
تحویل_2ڈی(فلٹر, kernel) |
Conv2D | Images |
بیچ_ضابطہ() |
BatchNormalization | Stabilise training |
سرایت(ذخیرہ, طول) |
Embedding | Word embeddings |
Common Losses & Optimizers
// Binary classification
ماڈل_م.مرتب_کریں(نقصان="binary_crossentropy");
// Multi-class classification (integer labels)
ماڈل_م.مرتب_کریں(نقصان="sparse_categorical_crossentropy");
// Regression
ماڈل_م.مرتب_کریں(نقصان="mse", مرتب_کنندہ="adam");
LLM — بڑا لسانی ماڈل (llama.cpp)
Run local GGUF models. Requires: pip install llama-cpp-python
Download models from: huggingface.co (look for .gguf format files)
درآمد { بڑا_لسانی_ماڈل } سے "اردو/ذہین";
// Load model
متغیر لم = نیا بڑا_لسانی_ماڈل(
"ماڈلز/llama-2-7b.Q4_K_M.gguf",
تھریڈ=4,
طوالت=2048,
جی_پی_یو=جھوٹ // سچ = use GPU
);
// Text completion
متغیر جواب = لم.بات_کرو(
"اردو پروگرامنگ کیا ہے؟",
زیادہ_ٹوکن=200,
درجہ_حرارت=0.7
);
لکھو(جواب);
// Chat format (messages list)
متغیر گفتگو = [
{ role: "system", content: "آپ مددگار اردو معلم ہیں" },
{ role: "user", content: "پائیتھن کیا ہے؟" }
];
متغیر گفتگو_جواب = لم.چیٹ(گفتگو, زیادہ_ٹوکن=300);
لکھو(گفتگو_جواب);
// Embeddings (enable ایمبیڈنگ_موڈ=سچ at load time)
// متغیر لم2 = نیا بڑا_لسانی_ماڈل("ماڈل.gguf", ایمبیڈنگ_موڈ=سچ);
// متغیر ایمبیڈ = لم2.ایمبیڈنگ("اردو متن");
Check if LLM is available:
اگر (بڑا_لسانی_ماڈل.متاح()) {
لکھو("llama.cpp دستیاب ہے");
} ورنہ {
لکھو("pip install llama-cpp-python چلائیں");
}
Practical Example: Spam Classifier — عملی مثال
درآمد { درجہ_بندی, ڈیٹا } سے "اردو/ذہین";
// Training data: word counts → spam (1) or not (0)
// Features: [links_count, exclamation_count, all_caps_words]
متغیر X = [
[0, 0, 0], // نہیں اسپام
[1, 1, 0], // نہیں اسپام
[5, 3, 2], // اسپام
[10, 5, 4], // اسپام
[0, 1, 0], // نہیں اسپام
[8, 4, 3] // اسپام
];
متغیر y = [0, 0, 1, 1, 0, 1];
// Split
متغیر تقسیم_م = ڈیٹا.تقسیم(X, y, جانچ=0.33, بیج=42);
متغیر X_ٹ = تقسیم_م[0];
متغیر X_ج = تقسیم_م[1];
متغیر y_ٹ = تقسیم_م[2];
متغیر y_ج = تقسیم_م[3];
// Train
متغیر درجہ_بند = نیا درجہ_بندی("جنگل");
درجہ_بند.سیکھیں(X_ٹ, y_ٹ);
// Evaluate
متغیر درستگی_م = درجہ_بند.درستگی(X_ج, y_ج);
لکھو(`درستگی: ${گول(درستگی_م * 100, 1)}%`);
// Predict new email
متغیر نئی_ای_میل = [[7, 4, 2]]; // lots of links + exclamations
متغیر نتیجہ = درجہ_بند.پیش_گوئی(نئی_ای_میل);
لکھو(نتیجہ[0] == 1 ? "اسپام" : "ٹھیک");
Quick Reference — فوری حوالہ
| Class / Module | Purpose | Requires |
|---|---|---|
نمپائی |
Numerical arrays | numpy (built-in) |
پانڈاز |
DataFrames, CSV | pandas |
درجہ_بندی |
Category prediction | scikit-learn |
ریگریشن |
Number prediction | scikit-learn |
ڈیٹا |
Train/test split, scaling | scikit-learn |
ترتیبی_ماڈل + layers |
Neural networks | tensorflow |
بڑا_لسانی_ماڈل |
Local LLM inference | llama-cpp-python |