Processing math: 100%

Data Preprocessing

Machine Learning - সাইকিট-লার্ন (Scikit-Learn)
101
101

Data Preprocessing হলো মেশিন লার্নিং এবং ডেটা সায়েন্সের একটি গুরুত্বপূর্ণ পদক্ষেপ, যার মাধ্যমে কাঁচা ডেটাকে বিশ্লেষণ এবং মডেলিংয়ের জন্য উপযোগী তৈরি করা হয়। কাঁচা ডেটা সাধারণত বিশৃঙ্খল, অপরিষ্কার বা অসম্পূর্ণ থাকে, তাই তার আগে ডেটা প্রি-প্রসেসিং করতে হয়, যাতে মডেলটি আরও ভালভাবে শিখতে পারে এবং সঠিক ফলাফল প্রদান করতে পারে।

ডেটা প্রি-প্রসেসিং এর মধ্যে বেশ কিছু স্টেপ অন্তর্ভুক্ত থাকে, যা নিম্নে আলোচনা করা হলো:


১. ডেটা ক্লিনিং (Data Cleaning)

ডেটা ক্লিনিং হলো ডেটার অপ্রয়োজনীয় বা ভুল তথ্য পরিষ্কার করা। এটি অন্তর্ভুক্ত:

  • মিসিং ভ্যালু (Missing Values):
    ডেটায় যদি কিছু মান অনুপস্থিত থাকে, তবে সেগুলি পূর্ণ করতে হয়। মিসিং ভ্যালু পূর্ণ করার জন্য বিভিন্ন পদ্ধতি ব্যবহার করা যায়, যেমন:
    • মাঝামাঝি মান (Mean/Median) দিয়ে পূর্ণ করা।
    • মোড (Mode) ব্যবহার করে ক্যাটেগরিক্যাল ভ্যারিয়েবল পূর্ণ করা।
    • ফরওয়ার্ড বা ব্যাকওয়ার্ড ফিলিং (Forward/Backward Filling)
  • ডুপ্লিকেট ভ্যালু (Duplicate Values):
    একই রেকর্ড যদি ডেটাতে একাধিক বার থাকে, তাহলে সেগুলি মুছে ফেলতে হয়।
  • আউটলাইয়ার (Outlier):
    কিছু অস্বাভাবিক বা অস্বাভাবিকভাবে দূরবর্তী মান যদি থাকে, তবে সেগুলি চিহ্নিত করে বাদ দেয়া বা সংশোধন করা।

২. ডেটা ট্রান্সফর্মেশন (Data Transformation)

ডেটা ট্রান্সফর্মেশন দ্বারা ডেটার মানের পরিবর্তন বা ট্রান্সফর্ম করা হয়, যাতে তা মডেলিংয়ের জন্য উপযোগী হয়।

  • স্কেলিং (Scaling):
    বিভিন্ন ফিচারের মানের স্কেল যদি আলাদা হয়ে থাকে, তবে সেগুলি একত্রিত করতে স্কেলিং প্রয়োজন। এতে মডেলটি সঠিকভাবে কাজ করতে পারে।
    • StandardScaler: প্রতিটি ফিচারকে ০ এবং ১ এর মধ্যে স্কেল করা।
    • MinMaxScaler: ফিচারগুলির মানকে একটি নির্দিষ্ট রেঞ্জে (যেমন ০ থেকে ১) নিয়ে আসা।
  • লগ ট্রান্সফরমেশন (Log Transformation):
    যদি ডেটায় অনেক বড় সংখ্যা থাকে, তবে তা ছোট করার জন্য লগ ট্রান্সফরমেশন ব্যবহার করা হয়। এটি সাধারণত অ্যাসিমেট্রিক ডেটার জন্য ব্যবহৃত হয়।
  • নরমালাইজেশন (Normalization):
    ডেটার মধ্যে বিভিন্ন মাপের স্কেল কমিয়ে তাদের একই স্কেলে আনা, যাতে মডেলটি সহজে শিখতে পারে।

৩. ক্যাটেগরিক্যাল ডেটা এনকোডিং (Categorical Data Encoding)

ক্যাটেগরিক্যাল ডেটা মেশিন লার্নিং মডেলে সরাসরি ব্যবহৃত হতে পারে না, তাই সেগুলি সংখ্যায় রূপান্তর করতে হয়।

  • Label Encoding:
    ক্যাটেগরিক্যাল ডেটাকে একটি নির্দিষ্ট সংখ্যা (যেমন, ০, ১, ২) দ্বারা এনকোড করা হয়। এটি সাধারণত একক কলামের জন্য ব্যবহৃত হয়।
  • One-Hot Encoding:
    প্রতিটি ক্যাটেগরি জন্য একটি নতুন কলাম তৈরি করে, যেখানে ঐ ক্যাটেগরি উপস্থিত থাকলে ১ এবং অনুপস্থিত থাকলে ০ থাকবে। এটি সাধারণত মাল্টিপল ক্যাটেগরিক্যাল ভেরিয়েবল জন্য ব্যবহৃত হয়।

৪. ফিচার সিলেকশন (Feature Selection)

ফিচার সিলেকশন হলো অপ্রয়োজনীয় বা কম গুরুত্বপূর্ণ ফিচারগুলি বাদ দেওয়া, যাতে মডেলটি কম জটিল হয় এবং পারফরম্যান্স বৃদ্ধি পায়।

  • ব্যাকওয়ার্ড এলিমিনেশন (Backward Elimination):
    প্রতিটি ফিচার একে একে বাদ দেওয়া হয় এবং দেখে নেওয়া হয় কোন ফিচারটি বাদ দিলে মডেলটি সেরা পারফরম্যান্স দেয়।
  • ফরওয়ার্ড সিলেকশন (Forward Selection):
    শুরুতে কোন ফিচার না থাকলে, একে একে নতুন ফিচার যোগ করা হয় এবং মূল্যায়ন করা হয়।
  • Recursive Feature Elimination (RFE):
    এটি একটি প্রক্রিয়া যা ফিচারগুলির গুরুত্ব যাচাই করে এবং কম গুরুত্বপূর্ণ ফিচারগুলি বাদ দেয়।

৫. ডেটা স্প্লিটিং (Data Splitting)

ডেটাকে ট্রেনিং এবং টেস্ট সেটে ভাগ করা হয় যাতে মডেলটি ট্রেনিং ডেটাতে শিখতে পারে এবং টেস্ট ডেটাতে পরীক্ষা করা যায়।

  • Train-Test Split:
    ডেটাকে সাধারণত ৭০-৩০ বা ৮০-২০ অনুপাতে ট্রেনিং এবং টেস্ট সেটে ভাগ করা হয়।
  • Cross-Validation:
    এটি মডেলটির পারফরম্যান্স পরিমাপ করার জন্য ডেটাকে একাধিক ভাগে ভাগ করে, যাতে মডেলটি ভিন্ন ভিন্ন ডেটাসেটের উপর পরীক্ষিত হয়।

৬. ডেটা স্যাম্পলিং (Data Sampling)

ডেটা স্যাম্পলিং হলো ডেটার একটি ছোট অংশ নির্বাচন করা, যাতে মডেলটি দ্রুত প্রশিক্ষিত হতে পারে। এটি সাধারণত বড় ডেটাসেটের ক্ষেত্রে ব্যবহৃত হয়।

  • Under-sampling:
    এটি বড় সাইজের ক্লাসের কিছু ডেটা বাদ দিয়ে ছোট সাইজের ক্লাসের সাথে সমান ডেটা তৈরি করে।
  • Over-sampling:
    এটি ছোট সাইজের ক্লাসের ডেটা পুনরায় কপি করে বড় সাইজের ক্লাসের সাথে সমান ডেটা তৈরি করে।

Scikit-Learn এ Data Preprocessing এর উদাহরণ

from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.model_selection import train_test_split
from sklearn.impute import SimpleImputer

# ডেটা লোড এবং ট্রেন-টেস্ট স্প্লিট
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# মিসিং ভ্যালু পূর্ণ করা
imputer = SimpleImputer(strategy='mean')
X_train = imputer.fit_transform(X_train)
X_test = imputer.transform(X_test)

# ডেটা স্কেলিং
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# ক্যাটেগরিক্যাল ডেটা এনকোডিং
encoder = OneHotEncoder()
X_train = encoder.fit_transform(X_train)
X_test = encoder.transform(X_test)

সারাংশ

ডেটা প্রি-প্রসেসিং হলো মেশিন লার্নিং প্রক্রিয়ার প্রথম এবং গুরুত্বপূর্ণ পদক্ষেপ, যা মডেল প্রশিক্ষণের জন্য ডেটাকে পরিষ্কার, স্কেল এবং রূপান্তরিত করে। এটি মডেলের পারফরম্যান্স এবং নির্ভুলতা উন্নত করতে সহায়ক। Scikit-Learn এবং অন্যান্য টুলস ব্যবহার করে এই প্রক্রিয়া সহজভাবে সম্পন্ন করা যায়।

Content added By

ডেটা লোড করা (CSV, Excel, Database)

96
96

ডেটা সায়েন্স এবং মেশিন লার্নিং প্রজেক্টে সঠিক ডেটা লোড করা একটি গুরুত্বপূর্ণ পদক্ষেপ। এটি বিভিন্ন ফরম্যাটে হতে পারে, যেমন CSV (Comma Separated Values), Excel (XLS, XLSX), অথবা ডেটাবেস থেকে ডেটা লোড করা। এখানে আমরা Python ব্যবহার করে এই ফরম্যাটগুলো থেকে ডেটা লোড করার উপায় সম্পর্কে আলোচনা করব।


১. CSV ফাইল থেকে ডেটা লোড করা

CSV (Comma Separated Values) ফাইল হলো সবচেয়ে সাধারণ ডেটা ফরম্যাট যেখানে তথ্য কমা দ্বারা পৃথক করা থাকে। pandas লাইব্রেরি ব্যবহার করে আমরা খুব সহজেই CSV ফাইল থেকে ডেটা লোড করতে পারি।

উদাহরণ:

import pandas as pd

# CSV ফাইল থেকে ডেটা লোড করা
df = pd.read_csv('data.csv')

# ডেটা দেখানো
print(df.head())  # প্রথম ৫টি সারি দেখাবে

ব্যাখ্যা:

  • pd.read_csv() ফাংশন ব্যবহার করে CSV ফাইলটি লোড করা হয়।
  • df.head() ফাংশন প্রথম ৫টি সারি প্রদর্শন করবে।

২. Excel ফাইল থেকে ডেটা লোড করা

Excel ফাইলগুলি সাধারণত .xls অথবা .xlsx এক্সটেনশনে থাকে। pandas লাইব্রেরি দিয়ে Excel ফাইল থেকে ডেটা লোড করা যায়, তবে এজন্য openpyxl বা xlrd লাইব্রেরি ইনস্টল করা থাকতে হবে (যদি তা না থাকে, pip install openpyxl কমান্ড দিয়ে এটি ইনস্টল করা যায়)।

উদাহরণ:

import pandas as pd

# Excel ফাইল থেকে ডেটা লোড করা
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')  # sheet_name দ্বারা সুনির্দিষ্ট শীট নির্বাচন করা যায়

# ডেটা দেখানো
print(df.head())

ব্যাখ্যা:

  • pd.read_excel() ফাংশন ব্যবহার করে Excel ফাইল থেকে ডেটা লোড করা হয়।
  • sheet_name প্যারামিটার দিয়ে নির্দিষ্ট শীট থেকে ডেটা লোড করা যায়।

৩. ডেটাবেস থেকে ডেটা লোড করা

ডেটাবেস থেকে ডেটা লোড করার জন্য SQLAlchemy বা sqlite3 মতো লাইব্রেরি ব্যবহার করা যেতে পারে। এখানে sqlite3 দিয়ে একটি সহজ উদাহরণ দেখানো হলো।

উদাহরণ:

import sqlite3
import pandas as pd

# SQLite ডেটাবেস সংযোগ তৈরি করা
conn = sqlite3.connect('database.db')

# SQL কোয়েরি চালানো এবং ডেটা লোড করা
df = pd.read_sql_query('SELECT * FROM table_name', conn)

# ডেটা দেখানো
print(df.head())

# সংযোগ বন্ধ করা
conn.close()

ব্যাখ্যা:

  • sqlite3.connect() ফাংশন ডেটাবেসে সংযোগ তৈরি করে।
  • pd.read_sql_query() ফাংশন SQL কোয়েরি চালিয়ে ডেটাবেস থেকে ডেটা লোড করে।
  • conn.close() দিয়ে ডেটাবেস সংযোগ বন্ধ করা হয়।

সারাংশ

  • CSV ফাইল থেকে ডেটা লোড: pandas.read_csv() ফাংশন ব্যবহার করে।
  • Excel ফাইল থেকে ডেটা লোড: pandas.read_excel() ফাংশন ব্যবহার করে, যেখানে openpyxl বা xlrd প্রয়োজন।
  • ডেটাবেস থেকে ডেটা লোড: sqlite3 বা SQLAlchemy ব্যবহার করে, এবং SQL কোয়েরি চালিয়ে ডেটা লোড করা যায়।

এই উপায়গুলো ব্যবহার করে আপনি বিভিন্ন সোর্স থেকে ডেটা খুব সহজেই লোড করতে পারেন।

Content added By

Missing Data Handle করা (Imputation Techniques)

141
141

ডেটা বিশ্লেষণের সময়, প্রায়শই কিছু মান বা ডেটা অনুপস্থিত থাকে, যা "Missing Data" নামে পরিচিত। Missing Data যদি সঠিকভাবে পরিচালনা না করা হয়, তবে এটি মডেলের পারফরম্যান্স এবং বিশ্লেষণের নির্ভুলতা নষ্ট করতে পারে। এই সমস্যা মোকাবিলার জন্য বিভিন্ন Imputation Techniques (ডেটার অনুপস্থিত মান পূর্ণ করার পদ্ধতি) রয়েছে, যা ডেটার গুণমান বজায় রেখে সমস্যাটি সমাধান করতে সাহায্য করে।


Missing Data কি?

Missing Data তখন ঘটে যখন ডেটাসেটে কিছু তথ্য পাওয়া যায় না বা অনুপস্থিত থাকে। এটি সাধারণত বিভিন্ন কারণে হতে পারে:

  • পরীক্ষক দ্বারা তথ্য সংগ্রহের সময় ত্রুটি
  • অপ্রয়োজনীয় বা প্রাসঙ্গিক না হওয়া ডেটা
  • যথাযথ রেকর্ড না করা

Imputation Techniques (ডেটা পূর্ণ করার পদ্ধতি)

Missing Data Imputation এর বিভিন্ন পদ্ধতি রয়েছে, যার মধ্যে কিছু সহজ এবং কিছু জটিল পদ্ধতি হতে পারে। নিচে কিছু জনপ্রিয় Imputation Techniques আলোচনা করা হলো:


1. Mean/Median/Mode Imputation

এটি Missing Data Imputation এর সবচেয়ে সাধারণ পদ্ধতি। এটি numerical (সংখ্যামূলক) ডেটার জন্য Mean বা Median, এবং ক্যাটেগরিক্যাল ডেটার জন্য Mode ব্যবহার করে Missing Data পূর্ণ করা হয়।

  • Mean Imputation: Missing মানের জন্য Mean (গড়) ব্যবহার করা হয়।
  • Median Imputation: যদি ডেটাতে আউটলাইয়ার থাকে, তবে Median (মাঝের মান) ব্যবহার করা হয়।
  • Mode Imputation: ক্যাটেগরিক্যাল ডেটার জন্য Mode (সর্বাধিক পুনরাবৃত্ত মান) ব্যবহার করা হয়।

উদাহরণ:

from sklearn.impute import SimpleImputer

# Mean Imputation
imputer = SimpleImputer(strategy='mean')
X_imputed = imputer.fit_transform(X)

বিভাগ:

  • Mean: সাধারণত গড় মান।
  • Median: মাঝের মান, যা আউটলাইয়ার থেকে প্রভাবিত হয় না।
  • Mode: সবচেয়ে বেশি ঘটে এমন মান।

2. K-Nearest Neighbors Imputation (KNN)

KNN Imputation হল একটি উন্নত পদ্ধতি যেখানে Missing Data পূর্ণ করার জন্য ডেটার কাছাকাছি নিকটতম k-টি প্রতিবেশী ব্যবহার করা হয়। এটি সংখ্যামূলক এবং ক্যাটেগরিক্যাল উভয় ধরনের ডেটার জন্য কার্যকরী। Missing মানের জন্য, এটি নিকটতম প্রতিবেশীদের মানের গড় বা মোড ব্যবহার করে।

উদাহরণ:

from sklearn.impute import KNNImputer

# KNN Imputation
imputer = KNNImputer(n_neighbors=3)
X_imputed = imputer.fit_transform(X)

বিভাগ:

  • KNN Imputation: নিকটতম প্রতিবেশীদের কাছ থেকে তথ্য সংগ্রহ করে পূর্ণ করা।

3. Regression Imputation

Regression Imputation পদ্ধতিতে, একটি রিগ্রেশন মডেল ব্যবহার করা হয়, যেখানে অন্যান্য বৈশিষ্ট্য (features) এর ভিত্তিতে Missing Data পূর্বাভাস করা হয়। এটি linear regression বা logistic regression মডেল হতে পারে। অন্য কথায়, Missing ডেটা পূর্ববর্তী ডেটার সম্পর্ক অনুসারে পূর্ণ করা হয়।

উদাহরণ:

from sklearn.linear_model import LinearRegression

# Regression Imputation
model = LinearRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

বিভাগ:

  • Linear Regression: সম্পর্কিত বৈশিষ্ট্য ব্যবহার করে পূর্ণ করা।

4. Multiple Imputation

Multiple Imputation একটি শক্তিশালী পদ্ধতি, যেখানে একাধিক ইম্পুটেশন তৈরি করা হয় এবং তারপর তাদের একটি গড়ের মাধ্যমে অচল বা অনুপস্থিত মান পূর্ণ করা হয়। এটি ডেটাতে অনিশ্চয়তা এবং বিভিন্ন ধরনের ইম্পুটেশন হ্যান্ডেল করতে সহায়ক।

উদাহরণ:

from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer

# Multiple Imputation
imputer = IterativeImputer()
X_imputed = imputer.fit_transform(X)

বিভাগ:

  • Multiple Imputation: একাধিক পূর্ণ মান তৈরি এবং সেগুলির গড় ব্যবহার করা।

5. Interpolation

Interpolation পদ্ধতিতে, ডেটার মধ্যে Missing মানের জন্য সন্নিহিত মানগুলির উপর ভিত্তি করে পূর্ণতা প্রদান করা হয়। এটি সাধারণত টাইম সিরিজ ডেটার জন্য ব্যবহৃত হয়, যেখানে পূর্ববর্তী এবং পরবর্তী মানের মধ্যে একটি ধারাবাহিকতা থাকে।

উদাহরণ:

# Interpolation (Example for time series data)
X_imputed = X.interpolate(method='linear')

বিভাগ:

  • Linear Interpolation: একে একে ডেটা পূর্ণ করা।
  • Polynomial Interpolation: একটি পলিনোমিয়াল ফাংশন ব্যবহার করে পূর্ণ করা।

6. Deep Learning Based Imputation

Deep Learning পদ্ধতির মাধ্যমে মিসিং ডেটা পূর্ণ করা যেতে পারে, যেমন Autoencoders ব্যবহার করে। Autoencoders একটি নিউরাল নেটওয়ার্ক মডেল, যা ইনপুট ডেটার সংকুচিত (compressed) রূপ তৈরি করে এবং পরে সেই রূপ থেকে Missing মান পূর্ণ করে।


Imputation Techniques নির্বাচন:

  • Mean/Median Imputation: দ্রুত এবং সহজ, তবে এটি ডেটার বৈশিষ্ট্য বা ডিস্ট্রিবিউশন পরিবর্তন করতে পারে।
  • KNN Imputation: আরও নির্ভুল, তবে সময়সাপেক্ষ এবং বড় ডেটাসেটের জন্য কিছুটা ধীর।
  • Regression Imputation: আরও নির্ভুল তবে কাস্টম মডেল তৈরি করতে হয়।
  • Multiple Imputation: অ্যালগরিদমের বেশ কয়েকটি শাখা তৈরি করে, যা সময়সাপেক্ষ হতে পারে কিন্তু নির্ভুলতার জন্য উপকারী।
  • Interpolation: টাইম সিরিজ ডেটার জন্য সবচেয়ে উপযুক্ত।

সারাংশ

Missing Data Imputation ডেটা বিশ্লেষণ এবং মডেলিংয়ে একটি গুরুত্বপূর্ণ ভূমিকা পালন করে। বিভিন্ন Imputation Techniques ব্যবহার করে Missing Data পূর্ণ করার পদ্ধতিগুলি বিভিন্ন ধরনের ডেটার জন্য উপযুক্ত হতে পারে। উপযুক্ত পদ্ধতি নির্বাচন করা ডেটার প্রকৃতি এবং গবেষণার প্রয়োজনীয়তার উপর নির্ভর করে।

Content added By

Data Scaling এবং Normalization (MinMaxScaler, StandardScaler)

130
130

Data Scaling এবং Normalization ডেটা প্রি-প্রসেসিং এর গুরুত্বপূর্ণ অংশ, যা মেশিন লার্নিং মডেলগুলোর পারফরম্যান্স উন্নত করতে সাহায্য করে। ডেটার স্কেলিং বা নরমালাইজেশন বিশেষভাবে গুরুত্বপূর্ণ যখন বিভিন্ন ফিচারের মানের মধ্যে পার্থক্য থাকে। যদি বিভিন্ন ফিচারের স্কেল অনেক বড় বা ছোট হয়, তবে কিছু মডেল সঠিকভাবে কাজ নাও করতে পারে। তাই এই প্রক্রিয়াগুলি মডেল ট্রেনিংয়ের আগে ডেটার পরিসীমা সামঞ্জস্যপূর্ণ করে।


Data Scaling (ডেটা স্কেলিং)

Data Scaling বা স্কেলিং হচ্ছে ডেটার বৈশিষ্ট্যগুলোর মান পরিবর্তন করে তাদের একটি নির্দিষ্ট পরিসরে নিয়ে আসা। এটি সাধারণত দুইভাবে করা হয়: Normalization এবং Standardization

MinMax Scaling (Normalization):

MinMax Scaling বা Normalization হল একটি পদ্ধতি যা ডেটার মানকে একটি নির্দিষ্ট সীমার মধ্যে পরিবর্তন করে, সাধারণত 0 এবং 1 এর মধ্যে। এর মাধ্যমে, সকল ফিচারের মান একই স্কেলে চলে আসে।

ফর্মুলা:

Xnorm=XXminXmaxXmin

যেখানে,

  • Xmin হচ্ছে ডেটার মিনিমাম মান।
  • Xmax হচ্ছে ডেটার ম্যাক্সিমাম মান।

এই পদ্ধতি ব্যবহার করা হয় যখন ডেটার মধ্যে প্রাথমিক স্কেল পার্থক্য বড় হয় এবং তা একটি কমন স্কেলে নিয়ে আসা দরকার।

উদাহরণ:

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
X_scaled = scaler.fit_transform(X)  # X হল আপনার ইনপুট ডেটা

উপকারিতা:

  • ডেটার সব ফিচারের মান 0 থেকে 1 বা -1 থেকে 1 এর মধ্যে থাকে।
  • কিছু মডেল, যেমন কনভোলিউশনাল নিউরাল নেটওয়ার্ক (CNN), ক্যাননি (KNN), সাপোর্ট ভেক্টর মেশিন (SVM) এই স্কেলিংয়ের প্রতি সংবেদনশীল।

সীমাবদ্ধতা:

  • যদি ডেটাতে আউটলাইয়ার থাকে, তবে এটি তাদের উপর অতিরিক্ত প্রভাব ফেলতে পারে কারণ আউটলাইয়ারের কারণে ম্যাক্স এবং মিনিমাম মান পরিবর্তিত হতে পারে।

Standard Scaling (Standardization):

Standard Scaling বা Standardization, ডেটার ফিচারগুলিকে এমনভাবে স্কেল করে যে তাদের mean 0 এবং standard deviation 1 হয়। এটি ডেটার আছড়ে পড়া অথবা Gaussian Distribution অনুসরণ করে। এই পদ্ধতি অধিকাংশ মডেলে ভালো কাজ করে।

ফর্মুলা:

Xscaled=Xμσ

যেখানে,

  • X হল ডেটার ফিচার,
  • μ হল ফিচারের গড় মান,
  • σ হল ফিচারের স্ট্যান্ডার্ড ডেভিয়েশন।

উদাহরণ:

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)  # X হল আপনার ইনপুট ডেটা

উপকারিতা:

  • গড় মান 0 এবং স্ট্যান্ডার্ড ডেভিয়েশন 1 হয়, যা অধিকাংশ মডেলের জন্য আদর্শ।
  • আউটলাইয়ার গুলি স্বাভাবিকভাবে বেশি প্রভাব ফেলতে পারে না, কারণ স্কেলিং স্ট্যান্ডার্ড ডেভিয়েশন এবং গড়ের উপর ভিত্তি করে করা হয়।

সীমাবদ্ধতা:

  • যদি ডেটা খুবই গোলাকার বা প্রচুর আউটলাইয়ার থাকে, তবে এটি সঠিকভাবে কাজ নাও করতে পারে।

কখন MinMaxScaler এবং StandardScaler ব্যবহার করবেন?

  • MinMaxScaler (Normalization):
    • যখন আপনার ডেটার বিভিন্ন ফিচার বিভিন্ন পরিসরের মধ্যে থাকে এবং আপনাকে তাদের একটি সাধারণ স্কেলে নিয়ে আসতে হয়।
    • যখন আপনি কোনো মডেল ব্যবহার করছেন যেমন KNN বা Neural Networks, যেগুলি স্কেল সংবেদনশীল।
  • StandardScaler (Standardization):
    • যখন ডেটার গড় মান এবং স্ট্যান্ডার্ড ডেভিয়েশন গুরুত্বপূর্ণ এবং আপনি তাদের সমানভাবে স্কেল করতে চান।
    • যখন আপনি linear models (Logistic Regression, Linear Regression) অথবা SVM এর মতো মডেল ব্যবহার করছেন, যেগুলির জন্য সাধারণত ডেটার গড় এবং স্ট্যান্ডার্ড ডেভিয়েশন 0 ও 1 হওয়া জরুরি।

সারাংশ

  • MinMaxScaler ডেটার মানকে একটি নির্দিষ্ট পরিসরে (সাধারণত 0 থেকে 1) নিয়ে আসে, যা স্কেলিংয়ের ক্ষেত্রে খুব কার্যকরী হতে পারে বিশেষত যখন ডেটার মধ্যে বড় স্কেল পার্থক্য থাকে।
  • StandardScaler ডেটার স্কেল পরিবর্তন করে, যাতে গড় মান 0 এবং স্ট্যান্ডার্ড ডেভিয়েশন 1 হয়, যা অধিকাংশ মেশিন লার্নিং মডেলের জন্য উপযুক্ত।
Content added By

Feature Encoding (Label Encoding, One-Hot Encoding)

160
160

মেশিন লার্নিংয়ে, ডেটা প্রি-প্রসেসিং একটি গুরুত্বপূর্ণ পদক্ষেপ, বিশেষ করে যখন ডেটায় ক্যাটেগরিক্যাল (ক্যাটাগরি বা শ্রেণীভিত্তিক) বৈশিষ্ট্য থাকে। ক্যাটেগরিক্যাল বৈশিষ্ট্য মেশিন লার্নিং মডেলে সরাসরি ব্যবহৃত হতে পারে না, তাই এগুলোকে সংখ্যাগত (নমেরিক) ফর্মে রূপান্তর করতে হয়। Feature Encoding এই কাজটি করে, যা ক্যাটেগরিক্যাল ডেটাকে একটি সংখ্যায় রূপান্তরিত করে, যাতে মডেল এটি বুঝতে পারে এবং সঠিকভাবে কাজ করতে পারে।

বিভিন্ন ধরনের ফিচার এনকোডিং পদ্ধতি রয়েছে, তবে সবচেয়ে জনপ্রিয় দুটি হল Label Encoding এবং One-Hot Encoding। আসুন, এদের সম্পর্কে বিস্তারিত আলোচনা করি:


১. Label Encoding

Label Encoding একটি সোজা পদ্ধতি, যেখানে প্রতিটি ক্যাটেগরিক্যাল মানকে একটি ইউনিক সংখ্যা দ্বারা রূপান্তরিত করা হয়। উদাহরণস্বরূপ, যদি একটি বৈশিষ্ট্য Color থাকে এবং এর মধ্যে Red, Green, এবং Blue এই মানগুলো থাকে, তাহলে প্রতিটি মানকে একটি সংখ্যা দিয়ে প্রতিস্থাপন করা হয়:

  • Red -> 0
  • Green -> 1
  • Blue -> 2

এই প্রক্রিয়ায় প্রতিটি ক্যাটেগরিক্যাল ভ্যালু একটি নির্দিষ্ট সংখ্যা দ্বারা প্রতিস্থাপিত হয়। তবে, Label Encoding সাধারণত শুধুমাত্র একধরনের ক্যাটেগরিক্যাল বৈশিষ্ট্যের জন্য ভাল কাজ করে, যেগুলোতে অর্ডার বা ধারাবাহিকতা থাকে (যেমন, Low, Medium, High)। যদি ক্যাটেগরিক্যাল ডেটার মধ্যে কোনো প্রাকৃতিক অর্ডার না থাকে, তবে Label Encoding মডেলের পারফরম্যান্সে নেতিবাচক প্রভাব ফেলতে পারে।

উদাহরণ:

from sklearn.preprocessing import LabelEncoder

# ডেটা তৈরি
categories = ['Red', 'Green', 'Blue', 'Green', 'Red']

# LabelEncoder অবজেক্ট তৈরি
encoder = LabelEncoder()

# ডেটা এনকোডিং
encoded_categories = encoder.fit_transform(categories)

print(encoded_categories)  # আউটপুট: [2 1 0 1 2]

২. One-Hot Encoding

One-Hot Encoding একটি জনপ্রিয় পদ্ধতি যেখানে প্রতিটি ক্যাটেগরিক্যাল মানের জন্য একটি নতুন কলাম তৈরি করা হয় এবং একটি নির্দিষ্ট ক্যাটেগরি উপস্থিত থাকলে সেই কলামে 1 প্রদান করা হয়, অন্যথায় 0 প্রদান করা হয়।

উদাহরণস্বরূপ, যদি একটি বৈশিষ্ট্য Color থাকে এবং এর মধ্যে Red, Green, এবং Blue এই মানগুলো থাকে, তখন One-Hot Encoding এইভাবে কাজ করবে:

ColorRedGreenBlue
Red100
Green010
Blue001
Green010
Red100

এখানে, Color বৈশিষ্ট্যের জন্য তিনটি নতুন কলাম তৈরি করা হয়েছে (Red, Green, Blue), এবং ডেটার মধ্যে প্রতিটি ক্যাটেগরিক্যাল মানের জন্য একটি 1 দেয়া হয়েছে, এবং অন্যান্য কলামে 0 রাখা হয়েছে।

One-Hot Encoding সাধারণত সেইসব ক্যাটেগরিক্যাল বৈশিষ্ট্যের জন্য উপযুক্ত, যেগুলোর মধ্যে কোনো প্রাকৃতিক অর্ডার নেই এবং প্রতিটি ক্যাটেগরি সমান গুরুত্ব বহন করে।

উদাহরণ:

from sklearn.preprocessing import OneHotEncoder
import numpy as np

# ডেটা তৈরি
categories = [['Red'], ['Green'], ['Blue'], ['Green'], ['Red']]

# OneHotEncoder অবজেক্ট তৈরি
encoder = OneHotEncoder(sparse=False)

# ডেটা এনকোডিং
encoded_categories = encoder.fit_transform(categories)

print(encoded_categories)

আউটপুট:

[[0. 0. 1.]
 [0. 1. 0.]
 [1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]

Label Encoding এবং One-Hot Encoding এর মধ্যে পার্থক্য

বৈশিষ্ট্যLabel EncodingOne-Hot Encoding
ডেটা রূপান্তরএকটি সংখ্যায় রূপান্তর করা হয়নতুন কলাম তৈরি করে প্রতিটি মানকে 1 অথবা 0 এ রূপান্তর করা হয়
যেমন সমস্যাঅর্ডার বা র্যাঙ্কিংয়ের জন্য ভালোযখন কোনো প্রাকৃতিক অর্ডার না থাকে
অতিরিক্ত কলামকোনো অতিরিক্ত কলাম তৈরি হয় নাপ্রতিটি ক্যাটেগরি জন্য একটি কলাম তৈরি হয়
ব্যবহারযোগ্যতাক্যাটেগরি যদি অর্ডার থাকে তবে ভালোক্যাটেগরি যদি অর্ডার না থাকে তবে ভালো
গুরুত্বকখনও কখনও মডেল অস্বাভাবিক আচরণ করতে পারেমডেল প্যারামিটারগুলি একে অপরের সাথে প্রতিযোগিতার সৃষ্টি করতে পারে না

কখন কোনটি ব্যবহার করবেন?

  • Label Encoding:
    • যখন আপনার ক্যাটেগরিক্যাল বৈশিষ্ট্যে একটি প্রাকৃতিক অর্ডার বা র্যাঙ্কিং থাকে, যেমন Low, Medium, High
    • যদি মডেলটি ক্যাটেগরিক্যাল মানের মধ্যে সম্পর্ক (অর্ডার) বুঝতে সক্ষম হয়, তখন Label Encoding ব্যবহার করা যেতে পারে।
  • One-Hot Encoding:
    • যখন ক্যাটেগরিক্যাল বৈশিষ্ট্যে কোনো অর্ডার বা র্যাঙ্কিং না থাকে এবং প্রতিটি ক্যাটেগরি সমান গুরুত্ব বহন করে, তখন One-Hot Encoding ব্যবহৃত হয়।
    • যখন মডেলটি ক্যাটেগরিক্যাল মানের মধ্যে সম্পর্ক বুঝতে পারবে না, যেমন রঙ (Red, Green, Blue)।

সারাংশ

  • Label Encoding ক্যাটেগরিক্যাল বৈশিষ্ট্যের প্রতিটি মানকে একটি সংখ্যায় রূপান্তরিত করে, যা কিছু নির্দিষ্ট ধরনের সমস্যার জন্য উপকারী।
  • One-Hot Encoding প্রতিটি ক্যাটেগরিক্যাল মানের জন্য একটি নতুন কলাম তৈরি করে, যা সাধারণত অর্ডারহীন ডেটার জন্য সেরা পদ্ধতি।
Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion