ریزننگ کوڈنگ ماسٹر - فوری نظر ثانی

ریجننگ کوڈنگ ماسٹر: ایک جامع گائیڈ

تعارف

ریجننگ کوڈنگ ایک طاقتور تکنیک ہے جو ڈیٹا میں پوشیدہ پیٹرنز کو دریافت کرنے اور پیش گوئیاں کرنے کے لیے مشین لرننگ کا استعمال کرتی ہے۔ یہ گائیڈ آپ کو بنیادی تصورات سے لے کر جدید تکنیکوں تک ریجننگ کوڈنگ میں مہارت دلانے کے لیے ڈیزائن کیا گیا ہے، جس میں عملی مثالیں اور حقیقی دنیا کی ایپلی کیشنز شامل ہیں۔

فہرستِ مطالب

  1. ریجننگ کوڈنگ کی بنیادیں
  2. ڈیٹا پری پروسیسنگ
  3. فیچر انجینئرنگ
  4. ماڈل سیلیکشن اور ٹریننگ
  5. ماڈل ایولیوایشن
  6. ہائپرپیرامیٹر ٹیوننگ
  7. اینسمبل میتھڈز
  8. نوازا ہوا لرننگ
  9. ڈیپ لرننگ اپروچز
  10. ٹائم سیریز فورکاسٹنگ
  11. انومالی ڈیٹیکشن
  12. انٹرپریٹیبلٹی
  13. پروڈکشن ڈپلائمنٹ
  14. کیس اسٹڈیز
  15. بہترین طریقے
  16. عام چیلنجز
  17. ریفرنسز

ریجننگ کوڈنگ کی بنیادیں

ریجننگ کیا ہے؟

ریجننگ ایک سپروائزڈ لرننگ ٹیکنیک ہے جو ایک یا زیادہ ان پٹ متغیرات (آزاد متغیرات) اور ایک مسلسل آؤٹ پٹ متغیر (انحصاری متغیر) کے درمیان تعلق کی ماڈلنگ کرتی ہے۔ یہ پیش گوئی کرنے کے لیے استعمال ہوتی ہے کہ جب نئے ان پٹ ڈیٹا دیا جائے تو آؤٹ پٹ کی کیا قدر ہوگی۔

ریجننگ کے اہم اقسام

1. لینیئر ریجننگ

سب سے بنیادی قسم جو ڈیٹا اور ٹارگٹ کے درمیان لینیئر تعلق کو ماڈل کرتی ہے۔

from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split

# نمونہ ڈیٹا تخلیق کریں
X, y = make_regression(n_samples=1000, n_features=10, noise=0.1, random_state=42)

# ٹرین اور ٹیسٹ سیٹ میں تقسیم کریں
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# ماڈل کو انیشی ایٹ اور ٹرین کریں
model = LinearRegression()
model.fit(X_train, y_train)

# اسکور حاصل کریں
score = model.score(X_test, y_test)
print(f"R² اسکور: {score:.4f}")

2. رجحان (Ridge) ریجننگ

جب ملٹی کولینیئریٹی موجود ہو یا بہت سے فیچرز ہوں تو لینیئر ریجننگ کی ایک بہتر شکل۔

from sklearn.linear_model import Ridge
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline

# ایک پائپ لائن بنائیں جو اسکیلنگ اور رجحان ریجننگ کو جوڑتی ہے
ridge_pipeline = Pipeline([
    ('scaler', StandardScaler()),
    ('regressor', Ridge(alpha=1.0))
])

# ماڈل کو ٹرین کریں
ridge_pipeline.fit(X_train, y_train)

# پرفارمنس چیک کریں
ridge_score = ridge_pipeline.score(X_test, y_test)
print(f"Ridge R² اسکور: {ridge_score:.4f}")

3. لاسو (Lasso) ریجننگ

فیچر سلیکشن کے ساتھ ساتھ ریگولرائزیشن بھی فراہم کرتا ہے۔

from sklearn.linear_model import Lasso

# لاسو ماڈل
lasso = Lasso(alpha=0.1)
lasso.fit(X_train, y_train)

# غیر صفر کوآفیشنٹس کی تعداد
non_zero_coef = np.sum(lasso.coef_ != 0)
print(f"غیر صفر کوآفیشنٹس: {non_zero_coef}")

4. ایلاسٹک نیٹ (Elastic Net)

رجحان اور لاسو دونوں کے فوائد کو یکجا کرتا ہے۔

from sklearn.linear_model import ElasticNet

# ایلاسٹک نیٹ ماڈل
elastic_net = ElasticNet(alpha=0.1, l1_ratio=0.5)
elastic_net.fit(X_train, y_train)

بنیادی میٹرکس

1. Mean Squared Error (MSE)

from sklearn.metrics import mean_squared_error

y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print(f"MSE: {mse:.4f}")

2. Root Mean Squared Error (RMSE)

rmse = np.sqrt(mse)
print(f"RMSE: {rmse:.4f}")

3. Mean Absolute Error (MAE)

from sklearn.metrics import mean_absolute_error

mae = mean_absolute_error(y_test, y_pred)
print(f"MAE: {mae:.4f}")

4. R² Score (Coefficient of Determination)

from sklearn.metrics import r2_score

r2 = r2_score(y_test, y_pred)
print(f"R²: {r2:.4f}")

5. Adjusted R²

def adjusted_r2_score(r2, n, p):
    """Adjusted R² حساب کریں"""
    return 1 - (1 - r2) * (n - 1) / (n - p - 1)

n = len(y_test)  # نمونوں کی تعداد
p = X_test.shape[1]  # فیچرز کی تعداد
adj_r2 = adjusted_r2_score(r2, n, p)
print(f"Adjusted R²: {adj_r2:.4f}")

ڈیٹا پری پروسیسنگ

ڈیٹا کلیننگ

1. مفقود قدریں ہینڈل کرنا

import pandas as pd
import numpy as np

# نمونہ ڈیٹا فریم
df = pd.DataFrame({
    'feature1': [1, 2, np.nan, 4, 5],
    'feature2': [2, np.nan, 4, 5, 6],
    'target': [10, 20, 30, np.nan, 50]
})

# مفقود قدروں کی تعداد چیک کریں
print(df.isnull().sum())

# مفقود قدروں کو ہینڈل کرنے کے طریقے

# طریقہ 1: میڈن سے بھرنا
df_median = df.fillna(df.median())

# طریقہ 2: میعار سے بھرنا
df_mean = df.fillna(df.mean())

# طریقہ 3: فارورڈ/بیك وارڈ فل
df_ffill = df.fillna(method='ffill')
df_bfill = df.fillna(method='bfill')

# طریقہ 4: انٹرپولیشن
df_interpolated = df.interpolate()

# طریقہ 5: KNN امپوٹیشن
from sklearn.impute import KNNImputer

imputer = KNNImputer(n_neighbors=3)
df_knn = pd.DataFrame(imputer.fit_transform(df), columns=df.columns)

2. آؤٹ لائرز کا پتہ لگانا اور ہینڈل کرنا

from scipy import stats
import matplotlib.pyplot as plt

# زد سے زیادہ قدریں (Z-score) کے ذریعے آؤٹ لائرز کا پتہ لگانا
z_scores = np.abs(stats.zscore(df.select_dtypes(include=[np.number])))
outliers_z = (z_scores > 3).any(axis=1)

# انٹرکوارٹائل رینج (IQR) طریقہ
Q1 = df.quantile(0.25)
Q3 = df.quantile(0.75)
IQR = Q3 - Q1
outliers_iqr = ((df < (Q1 - 1.5 * IQR)) | (df > (Q3 + 1.5 * IQR))).any(axis=1)

# آؤٹ لائرز کو ہینڈل کرنا
# طریقہ 1: ہٹانا
df_no_outliers = df[~outliers_iqr]

# طریقہ 2: کیپنگ
df_capped = df.copy()
for col in df.columns:
    if df[col].dtype in ['float64', 'int64']:
        percentiles = df[col].quantile([0.01, 0.99])
        df_capped[col] = df[col].clip(percentiles[0.01], percentiles[0.99])

3. ڈپلیکیٹ ریکارڈز

# ڈپلیکیٹس چیک کریں
duplicates = df[df.duplicated()]

# ڈپلیکیٹس ہٹائیں
df_no_duplicates = df.drop_duplicates()

فیچر اسکیلنگ

1. StandardScaler (Z-score نارملائزیشن)

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

2. MinMaxScaler

from sklearn.preprocessing import MinMaxScaler

minmax_scaler = MinMaxScaler(feature_range=(0, 1))
X_minmax = minmax_scaler.fit_transform(X)

3. RobustScaler

from sklearn.preprocessing import RobustScaler

robust_scaler = RobustScaler()
X_robust = robust_scaler.fit_transform(X)

4. MaxAbsScaler

from sklearn.preprocessing import MaxAbsScaler

maxabs_scaler = MaxAbsScaler()
X_maxabs = maxabs_scaler.fit_transform(X)

انکوڈنگ کیٹیگوریکل فیچرز

1. Label Encoding

from sklearn.preprocessing import LabelEncoder

# نمونہ ڈیٹا
data = pd.DataFrame({
    'category': ['A', 'B', 'C', 'A', 'B'],
    'target': [1, 2, 3, 4, 5]
})

# Label Encoding
le = LabelEncoder()
data['category_encoded'] = le.fit_transform(data['category'])

2. One-Hot Encoding

from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer

# One-Hot Encoding
ohe = OneHotEncoder(sparse=False, drop='first')
ct = ColumnTransformer([('ohe', ohe, ['category'])], remainder='passthrough')
data_encoded = ct.fit_transform(data)

3. Target Encoding

from category_encoders import TargetEncoder

# Target Encoding
te = TargetEncoder()
data['category_te'] = te.fit_transform(data['category'], data['target'])

فیچر ٹرانسفارمیشن

1. Log Transformation

# لاگ ٹرانسفارمیشن
df['log_feature'] = np.log1p(df['feature'])

2. Box-Cox Transformation

from scipy import stats

# صرف مثبت قدریں
positive_data = df[df['feature'] > 0]['feature']
df['boxcox_feature'], _ = stats.boxcox(positive_data)

3. Yeo-Johnson Transformation

from sklearn.preprocessing import PowerTransformer

pt = PowerTransformer(method='yeo-johnson')
df['yeo_johnson'] = pt.fit_transform(df[['feature']])

فیچر انجینئرنگ

فیچر تخلیق

1. پولینومیل فیچرز

from sklearn.preprocessing import PolynomialFeatures

# پولینومیل فیچرز تخلیق کریں
poly = PolynomialFeatures(degree=2, include_bias=False)
X_poly = poly.fit_transform(X)
print(f"اصل فیچرز: {X.shape[1]}")
print(f"پولینومیل کے بعد: {X_poly.shape[1]}")

2. انٹرایکشن فیچرز

from sklearn.preprocessing import PolynomialFeatures

# صرف انٹرایکشن ٹرمز
interaction = PolynomialFeatures(degree=2, interaction_only=True, include_bias=False)
X_interaction = interaction.fit_transform(X)

3. بنیادی ریاضیاتی آپریشنز

# نمونہ ڈیٹا فریم
df = pd.DataFrame({
    'length': [10, 20, 30],
    'width': [5, 10, 15],
    'height': [2, 4, 6]
})

# نئے فیچرز تخلیق کریں
df['volume'] = df['length'] * df['width'] * df['height']
df['surface_area'] = 2 * (df['length']*df['width'] + df['width']*df['height'] + df['height']*df['length'])
df['aspect_ratio'] = df['length'] / df['width']

ڈیٹا اور ٹائم فیچرز

1. ڈیٹا سے فیچرز نکالنا

from datetime import datetime

# نمونہ ڈیٹا
df = pd.DataFrame({
    'date': pd.date_range('2023-01-01', periods=100, freq='D'),
    'value': np.random.randn(100)
})

# ڈیٹا فیچرز
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
df['day'] = df['date'].dt.day
df['dayofweek'] = df['date'].dt.dayofweek
df['quarter'] = df['date'].dt.quarter
df['weekofyear'] = df['date'].dt.isocalendar().week
df['is_weekend'] = df['date'].dt.dayofweek.isin([5, 6]).astype(int)

2. سائیکلیکل انکوڈنگ

# سائیکلیکل انکوڈنگ کے لیے
def cyclical_encoding(df, col, period):
    df[f'{col}_sin'] = np.sin(2 * np.pi * df[col] / period)
    df[f'{col}_cos'] = np.cos(2 * np.pi * df[col] / period)
    return df

# مہینے کے لیے سائیکلیکل انکوڈنگ
df = cyclical_encoding(df, 'month', 12)

# دن کے ہفتے کے لیے
df = cyclical_encoding(df, 'dayofweek', 7)

بائننگ اور ڈسکریٹائزیشن

1. Equal-width Binning

# برابر چوڑائی والے بن
df['age_bin'] = pd.cut(df['age'], bins=5, labels=['Very Young', 'Young', 'Middle', 'Old', 'Very Old'])

2. Equal-frequency Binning

# برابر فریکوئنسی والے بن
df['income_bin'] = pd.qcut(df['income'], q=4, labels=['Low', 'Medium-Low', 'Medium-High', 'High'])

3. کسٹم بائننگ

# کسٹم بن
bins = [0, 18, 35, 50, 65, 100]
labels = ['Child', 'Young Adult', 'Adult', 'Middle Age', 'Senior']
df['age_custom'] = pd.cut(df['age'], bins=bins, labels=labels)

فیچر سلیکشن

1. یونی ویرایٹ فیچر سلیکشن

from sklearn.feature_selection import SelectKBest, f_regression

# یونی ویرایٹ فیچر سلیکشن
selector = SelectKBest(score_func=f_regression, k=5)
X_selected = selector.fit_transform(X, y)

# منتخب فیچرز کے انڈیکس
selected_features = selector.get_support(indices=True)

2. ریکرسِو فیچر الیمنیشن (RFE)

from sklearn.feature_selection import RFE
from sklearn.linear_model import LinearRegression

# RFE
model = LinearRegression()
rfe = RFE(estimator=model, n_features_to_select=5)
rfe.fit(X, y)

# منتخب فیچرز
selected_features_rfe = rfe.support_

3. فیچر اہمیت پر مبنی

from sklearn.ensemble import RandomForestRegressor

# Random Forest فیچر اہمیت
rf = RandomForestRegressor(n_estimators=100, random_state=42)
rf.fit(X, y)

# فیچر اہمیت حاصل کریں
importances = rf.feature_importances_
feature_names = [f'feature_{i}' for i in range(X.shape[1])]
feature_importance_df = pd.DataFrame({'feature': feature_names, 'importance': importances})
feature_importance_df = feature_importance_df.sort_values('importance', ascending=False)

4. L1 پر مبنی فیچر سلیکشن

from sklearn.linear_model import LassoCV

# Lasso CV کے ذریعے فیچر سلیکشن
lasso_cv = LassoCV(cv=5, random_state=42)
lasso_cv.fit(X, y)

# غیر صفر کوآفیشنٹس
mask = lasso_cv.coef_ != 0
X_selected_lasso = X[:, mask]

ماڈل سیلیکشن اور ٹریننگ

ایک لائن کے اصول (20)

  1. A→1، B→2 … Z→26 – آگے/پیچھے چھلانگوں کے لیے ہمیشہ یاد رکھیں۔
  2. A کا الٹ Z ہے (1+26=27) – آئینہ کوڈز کے لیے “27-اصول” استعمال کریں۔
  3. کسی لفظ کا ریورس مطلب ہر حرف کی نمبر ویلیو کا بھی ریورس۔
  4. +1، –1، ×2، ÷2 یہ چار سب سے زیادہ استعمال ہونے والے “آپریشن چین” ہیں۔
  5. “SENT → +1 each” کوڈ میں، SENT = TFOU؛ Z کے بعد A پر واپس جانا یاد رکھیں۔
  6. “GIFT → HJSU” +1، +2، +3، +4 پیٹرن ہے – بڑھتے ہوئے اقدامات پر نظر رکھیں۔
  7. حرُفِ علت ↔ صامت تبادلہ کوڈز: A↔B، E↔C، I↔D، O↔F، U↔G (سیٹس میں مشہور)۔
  8. نمبر کوڈنگ: آخری حرف کی الفابیٹ ویلیو بطور ہندسہ لیں (CAT → 20)۔
  9. اگر “A=%، B=@ …” – ہمیشہ پہلے 5-علامات × 5-حروف گرڈ بنائیں۔
  10. مشروط: “اگر پہلا حرف حرُفِ علت → +2، ورنہ –1” – ریورس سے پہلے لاگو کریں۔
  11. “SISTER کو 20-10-20-21-6-19 لکھا گیا” – پلیس ویلیو 2-ڈجٹ فارمیٹ برقرار رکھتی ہے۔
  12. “ریورس + فارورڈ” مکس میں، دونوں نصفوں کو علیحدہ سمجھیں (PRACTICE → ECITCAR + EP)۔
  13. میٹرکس کوڈز کے لیے، row = (pos – 1) ÷ 5؛ column = remainder (0→5)۔
  14. ڈیجیٹ-حرف مکس میں، طاق ہندسہ → 1 حرف چھوڑیں، جفت ہندسہ → 2 حرف چھوڑیں۔
  15. “کوڈ ویلیوز کا SUM” سوالات – پہلے جمع کریں، پھر 3/5 سے قابلِ تقسیم ہونے کی جانچ کریں۔
  16. اگر کوڈ میں صرف 3 علامات دہر رہی ہوں، تِگنا مشتبہ کریں (A→#، E→#، I→#)۔
  17. آخری-حرف-پہلا-حرف لنک: آخری حرف کا کوڈ اگلے لفظ کا پہلا نمبر بنتا ہے۔
  18. “پرائم سے شفٹ” کوڈز: 2، 3، 5، 7… – 26 سے کم یا برابر پرائمز ایک بار لکھ لیں۔
  19. آئینہ جوڑی چیک: A-Z، B-Y… (13 جوڑے) – 50٪ وقت بچتا ہے۔
  20. ہمیشہ ڈیکوڈ شدہ لفظ کو جواب کے اختیارات میں چیک کریں – 3 اختیارات فوری ختم ہو جاتے ہیں۔

فارمولے/اصول

فارمولہ / اصول استعمال
27 – pos = مخالف حرف فوری آئینہ کوڈنگ
(pos ± n) mod 26 → اگر 0 تو 26 ± شفٹس کے لیے لفافہ
Row = ⌈pos / 5⌉, Col = (pos–1) mod 5 + 1 5×5 میٹرکس کوڈنگ
پہلے اور آخری حرف کے کوڈز کا مجموعہ = درمیانی حرف کا کوڈ درمیانی-حرف پیٹرن چیک کریں
حروفِ علت کا سیٹ {A,E,I,O,U} = {1,5,9,15,21} تیز حروفِ علت پہچان
پرائم پوزیشنز: 2,3,5,7,11,13,17,19,23 پرائم-شفٹ کوڈنگ
جفت پوزیشن حروف ×2 → ہندسہ؛ طاق پوزیشن ÷2 → ہندسہ جفت-طاق تقسیم کوڈنگ
Reverse(pos) = 27 – pos الٹی حرفِ تہجی قیمت
کوڈ شدہ ہندسہ → حرف: 1=A, 2=B…9=I, 0=Z (لفافہ) فون-پیڈ طرز
پہلے حرف کا کوڈ + آخری حرف کا کوڈ = ثابت (k) 3 لفظی سیٹس کے لیے k-اصول

یادداشت کے ٹرک (یادگار اصول)

  1. AZ-27: “A-Z 27 ہے” – آٹو رکشہ نمبر سوچیں تاکہ آئینہ مجموعہ یاد رہے۔
  2. حروفِ علت 1-5-9-15-21: “ایگل آئی او امبریلا پر ہے” – ابتدائی حروف اور اعداد بڑھتے ہیں۔
  3. 5×5 میٹرکس: “پانچ دوست پانچ قطاروں میں” – جلدی جال کھینچنے پر مجبور کرتا ہے۔
  4. شفٹ پرائمز: “Two Three Five Seven – Two Thumbs For Victory” (2-3-5-7)۔
  5. لفافہ: “Z کے بعد A آتا ہے – جیسے اتوار کے بعد پیر” – mod-26 کبھی نہ بھولیں۔

عام غلطیاں

عام غلطی صحیح طریقہ
Z+1→A کو لپیٹنا بھول جانا ہمیشہ mod-26 کا اطلاق کریں؛ اگر 0 ہو تو اسے 26 سمجھیں
پہلے ریورس پھر شفٹ بمقابلہ پہلے شفٹ پھر ریورس کو ملانا سوال کے تسلسل پر سختی سے عمل کریں
26 کو باقی 0 شمار کرنا باقی 0 کا مطلب 26واں حرف (Z) ہے
A=0 کے بجائے A=1 استعمال کرنا ریلوے کے معیارات A=1 استعمال کرتے ہیں؛ ایک بار تصدیق کر لیں
ڈبل-لیٹر کوڈز (مثلاً CH، SH) کو نظر انداز کرنا چیک کریں کہ کیا ڈائگرافز کو خاص علامات دیے گئے ہیں

5 فوری MCQs

Q1. اگر “ROSE” کو “58” کے طور پر کوڈ کیا گیا ہے تو “LOTUS” ہے
A) 60 B) 65 C) 70 D) 75

Q2. ایک مخصوص کوڈ میں “DELHI” کو “CDKGH” لکھا جاتا ہے۔ کس لفظ کو “BCKGP” کے طور پر کوڈ کیا گیا ہے؟
A) CALIF B) CAMEL C) CABLE D) CADET

Q3. اگر A=#، B=@، C=%، D=$ اور آگے اسی طرح ہے، تو “BAD” کے لیے کوڈ ہے
A) @#$ B) @#% C) @%$ D) @$#

Q4. “TEACH” → “HDIZX” آئینہ کوڈنگ سے۔ “EXAM” کیا ہے؟
A) VCZN B) VCZO C) VCZN D) VEZO

Q5. پیٹرن 2، 5، 10، 17، 26، … کی پیروی کرتے ہوئے چھٹی مدت سے کون سا حرف مطابقت رکھتا ہے؟
A) Q B) R C) S D) T

(جوابات: 1-B، 2-C، 3-A، 4-A، 5-D)