ডেটা হ্যান্ডলিং
ডেটার ধরন
Excel/CSV-এর মতো — row ও column।
ছবি — pixel-এর matrix।
লেখা — শব্দের sequence।
সময়ের সাথে পরিবর্তিত সংকেত।
ডেটা লোড করা
import pandas as pd
# CSV
df = pd.read_csv("data.csv")
# Excel
df = pd.read_excel("data.xlsx")
# JSON
df = pd.read_json("data.json")
# প্রথম ৫ row দেখুন
print(df.head())
print(df.info()) # column type, missing value
print(df.describe()) # summary statisticsMissing Value — অসম্পূর্ণ ডেটা
বাস্তব ডেটায় প্রায়ই কিছু value missing থাকে। তিনটি কৌশল আছে — মুছে ফেলা, পূরণ করা, বা ফ্ল্যাগ করা।
# missing value চেক
print(df.isnull().sum())
# কৌশল ১: যেসব row-তে missing আছে — drop
df_clean = df.dropna()
# কৌশল ২: গড় দিয়ে পূরণ (numeric column)
df["age"] = df["age"].fillna(df["age"].mean())
# কৌশল ৩: সবচেয়ে common value দিয়ে পূরণ (category)
df["city"] = df["city"].fillna(df["city"].mode()[0])Categorical Data — সংখ্যায় রূপান্তর
মডেল শুধু সংখ্যা বোঝে — "Dhaka", "Chittagong" বোঝে না। তাই category-কে সংখ্যায় বদলাতে হয়।
One-Hot Encoding
# pandas দিয়ে
df_encoded = pd.get_dummies(df, columns=["city"])
# নতুন column: city_Dhaka, city_Chittagong, city_SylhetLabel Encoding
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
df["grade_encoded"] = le.fit_transform(df["grade"])
# A→0, B→1, C→2Normalization ও Standardization
মডেলে যদি একটি feature 0–1 আর আরেকটি 0–10000 হয়, training অস্থির হবে। তাই সব feature-কে একই scale-এ আনতে হয়।
from sklearn.preprocessing import StandardScaler, MinMaxScaler
# Min-Max: 0 থেকে 1-এর মধ্যে
scaler = MinMaxScaler()
X_scaled = scaler.fit_transform(X)
# Standard: গড় 0, std 1
scaler = StandardScaler()
X_std = scaler.fit_transform(X)- MinMax: Image pixel (0–255 → 0–1), neural network input।
- Standard: যখন ডেটা সাধারণত Gaussian distribution-এর মতো।
Train / Validation / Test Split
একটি মডেলকে কখনো সম্পূর্ণ ডেটায় train করে সম্পূর্ণ ডেটায় test করবেন না — সেটা পরীক্ষায় উত্তর দেখে পরীক্ষা দেওয়ার মতো। তিন ভাগে ভাগ করুন।
সাধারণ অনুপাত — ছোট ডেটায় 80/10/10, বড় ডেটায় 98/1/1 ও হয়।
from sklearn.model_selection import train_test_split
# প্রথমে train+val ও test আলাদা
X_train_val, X_test, y_train_val, y_test = train_test_split(
X, y, test_size=0.15, random_state=42
)
# তারপর train আর val
X_train, X_val, y_train, y_val = train_test_split(
X_train_val, y_train_val, test_size=0.176, random_state=42
)Image ডেটা — বিশেষ প্রক্রিয়া
from PIL import Image
import numpy as np
img = Image.open("cat.jpg").convert("RGB")
img = img.resize((224, 224)) # সব ছবি একই আকার
arr = np.array(img) / 255.0 # 0-255 → 0-1 normalize
print(arr.shape) # (224, 224, 3)Data Augmentation — ছবি বাড়ানো
১০০০ ছবি কম মনে হচ্ছে? একই ছবিকে ঘুরিয়ে, কাত করে, brightness বদলে আরো ৫০০০ ছবি বানানো যায়। এটাই data augmentation — overfitting কমায়।
from torchvision import transforms
train_transform = transforms.Compose([
transforms.Resize((224, 224)),
transforms.RandomHorizontalFlip(),
transforms.RandomRotation(15),
transforms.ColorJitter(brightness=0.2, contrast=0.2),
transforms.ToTensor(),
])Text ডেটা — Tokenization
sentence = "আমি বাংলা ভাষা ভালোবাসি"
# সহজ tokenization
tokens = sentence.split()
print(tokens) # ['আমি', 'বাংলা', 'ভাষা', 'ভালোবাসি']
# vocabulary বানানো
vocab = {word: idx for idx, word in enumerate(set(tokens))}
# token → number
ids = [vocab[w] for w in tokens]Imbalanced Dataset
১০০০টি ছবির মধ্যে ৯৫০টা "Cat" আর ৫০টা "Dog" হলে মডেল শুধু "Cat" বললেই ৯৫% accuracy পাবে — কিন্তু আসলে কিছুই শেখেনি। সমাধান:
- Oversampling: minority class-এর ছবি ডুপ্লিকেট/augment করুন।
- Undersampling: majority class থেকে কিছু কমান।
- Class weights: loss function-এ minority-কে বেশি weight দিন।
- SMOTE: synthetic example তৈরি করুন।
সাধারণ ভুল ধারণা
- Data Leakage: test set থেকে scaler fit করা — কখনো না। শুধু train-এ fit, test-এ transform।
- Train ও test-এ আলাদা augmentation — test-এ কোনো augmentation দরকার নেই।
- সব column-এ blindly fillna করা — context বুঝে decide করুন।
- Image normalize না করা — training অস্থির হবে।
অনুশীলন
১. একটি CSV (যেমন Titanic) ডাউনলোড করে missing value handle করুন।
২. একটি ছবি লোড করে normalize করুন এবং shape print করুন।
৩. Iris dataset-কে 70/15/15 ভাগে split করে train, val, test set বানান।
৪. একটি বাংলা sentence-এর simple tokenizer ও vocabulary তৈরি করুন।
মিনি প্রজেক্ট
ইন্টারভিউ প্রশ্ন
- Normalization ও Standardization-এর পার্থক্য কী?
- One-hot ও label encoding-এর পার্থক্য কী?
- Data leakage কী এবং কেন বিপজ্জনক?
- Imbalanced dataset কীভাবে handle করবেন?
- কেন validation set আলাদা রাখা হয়?
সারসংক্ষেপ
- ডেটার ধরন — tabular, image, text, time-series।
- Missing value হ্যান্ডলিং, encoding, scaling।
- Train/Validation/Test split — ও কেন গুরুত্বপূর্ণ।
- Image augmentation, text tokenization।
- Imbalanced dataset-এর সমাধান।
- এই অধ্যায়ে আমাদের Phase 0 (ভিত্তি প্রস্তুতি) শেষ। পরের Phase-এ আমরা সত্যিকারের নিউরাল নেটওয়ার্ক বানানো শুরু করব।