Skill

ডেটা প্রি-প্রসেসিং

পাইথনে লজিস্টিক রিগ্রেশন (Logistic Regression in Python) - Machine Learning

380

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

ডেটা প্রি-প্রসেসিং এর বেশ কয়েকটি ধাপ রয়েছে, যা সাধারণত নিম্নলিখিত প্রক্রিয়াগুলোর মধ্যে পড়ে:


1. Missing Values (অনুপস্থিত মান) হ্যান্ডলিং

ডেটাতে অনুপস্থিত মান (missing values) থাকলে, মডেলটি সঠিকভাবে প্রশিক্ষিত হতে পারে না। আমরা বিভিন্ন পদ্ধতিতে এগুলো হ্যান্ডল করতে পারি:

(a) অনুপস্থিত মান চেক করা:

import pandas as pd

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

# Missing values চেক করা
print(df.isnull().sum())

(b) অনুপস্থিত মান পূর্ণ করা (Imputation):

অনুপস্থিত মান পূর্ণ করার জন্য দুটি সাধারণ পদ্ধতি:

  • মিন (Mean) দিয়ে পূর্ণ করা
  • মোড (Mode) বা মেডিয়ান (Median) দিয়ে পূর্ণ করা
# অনুপস্থিত মানের জন্য Mean দিয়ে পূর্ণ করা
df['column_name'] = df['column_name'].fillna(df['column_name'].mean())

(c) অনুপস্থিত মান মুছে ফেলা (Drop):

যদি আপনি চান যে ডেটার কোন কলামে যদি অনুপস্থিত মান থাকে, তাহলে ওই রেকর্ডটি সরিয়ে ফেলুন।

# অনুপস্থিত মান মুছে ফেলা
df = df.dropna()  # সমস্ত রেকর্ড যেগুলিতে Missing Value আছে তা সরিয়ে ফেলবে

2. ডুপ্লিকেট ডেটা (Duplicate Data) হ্যান্ডলিং

ডেটাতে এক বা একাধিক ডুপ্লিকেট রেকর্ড থাকলে, সেটি মডেল ট্রেনিংয়ে বিভ্রান্তির সৃষ্টি করতে পারে। ডুপ্লিকেট রেকর্ডগুলো সরানো গুরুত্বপূর্ণ।

(a) ডুপ্লিকেট রেকর্ড চেক করা:

# ডুপ্লিকেট রেকর্ড চেক করা
print(df.duplicated().sum())

(b) ডুপ্লিকেট রেকর্ড মুছে ফেলা:

# ডুপ্লিকেট রেকর্ড মুছে ফেলা
df = df.drop_duplicates()

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

মেশিন লার্নিং মডেলগুলির জন্য, বিশেষ করে লিনিয়ার মডেল এবং ক্লাস্টারিং মডেল এর ক্ষেত্রে, ডেটার স্কেলিং খুবই গুরুত্বপূর্ণ। এটি ইনপুট ফিচারগুলিকে সমান স্কেলে এনে মডেলটিকে ভালোভাবে কাজ করতে সাহায্য করে।

(a) স্ট্যান্ডার্ড স্কেলিং (Standard Scaling):

StandardScaler ব্যবহার করে ডেটা স্কেল করা হয়, যা ইনপুট ফিচারের গড় মান 0 এবং স্ট্যান্ডার্ড ডিভিয়েশন 1 করে।

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
df[['column1', 'column2']] = scaler.fit_transform(df[['column1', 'column2']])

(b) মিন-সকেল (Min-Max Scaling):

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

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
df[['column1', 'column2']] = scaler.fit_transform(df[['column1', 'column2']])

4. ক্যাটেগোরিকাল ডেটা (Categorical Data) হ্যান্ডলিং

মেশিন লার্নিং মডেলগুলির জন্য ক্যাটেগোরিকাল ডেটা (যেমন: "Yes" বা "No", "Male" বা "Female") সংখ্যায় রূপান্তরিত করতে হয়।

(a) Label Encoding:

Label Encoding ব্যবহার করে ক্যাটেগোরিকাল ডেটা সংখ্যায় রূপান্তর করা হয়।

from sklearn.preprocessing import LabelEncoder

encoder = LabelEncoder()
df['column_name'] = encoder.fit_transform(df['column_name'])

(b) One-Hot Encoding:

যখন একাধিক শ্রেণী থাকে, তখন One-Hot Encoding ব্যবহার করা হয়। এটি প্রত্যেকটি ক্যাটেগরি (শ্রেণী) কে আলাদা কলামে রূপান্তরিত করে।

df = pd.get_dummies(df, columns=['column_name'])

5. আউটলায়ার (Outlier) হ্যান্ডলিং

আউটলায়ার হচ্ছে এমন মান যেগুলি স্বাভাবিক ডেটার থেকে খুব বেশি ভিন্ন। এগুলো মডেল ট্রেনিংয়ের পারফরম্যান্সে প্রভাব ফেলতে পারে, তাই এগুলোকেও সঠিকভাবে হ্যান্ডল করা উচিত।

(a) আউটলায়ার চেক করা:

import matplotlib.pyplot as plt

# একটি নির্দিষ্ট কলামের আউটলায়ার চেক করা
plt.boxplot(df['column_name'])
plt.show()

(b) আউটলায়ার মুছে ফেলা:

আউটলায়ার চিহ্নিত করে সেগুলো মুছে ফেলতে পারেন।

# আউটলায়ার মুছে ফেলা (যেমন: 1.5 ইন্টারকোয়ানটাইল রেঞ্জের বাইরে মান)
Q1 = df['column_name'].quantile(0.25)
Q3 = df['column_name'].quantile(0.75)
IQR = Q3 - Q1

# আউটলায়ার বাদ দেওয়া
df = df[(df['column_name'] >= Q1 - 1.5 * IQR) & (df['column_name'] <= Q3 + 1.5 * IQR)]

6. ফিচার ইঞ্জিনিয়ারিং (Feature Engineering)

ফিচার ইঞ্জিনিয়ারিং হলো নতুন ফিচার তৈরি করা বা বিদ্যমান ফিচারগুলিকে কাস্টমাইজ করা, যা মডেলের পারফরম্যান্স উন্নত করতে সাহায্য করে। এটি সঠিকভাবে করতে পারলে মডেল অনেক ভালো ফলাফল দেয়।

(a) নতুন ফিচার তৈরি:

# একটি নতুন ফিচার তৈরি করা যা দুটি ফিচারের যোগফল
df['new_column'] = df['column1'] + df['column2']

সারাংশ

ডেটা প্রি-প্রসেসিং একটি অত্যন্ত গুরুত্বপূর্ণ স্টেপ যা ডেটাকে মডেল ট্রেনিংয়ের জন্য উপযোগী করে তোলে। এটি অন্তর্ভুক্ত:

  • Missing values হ্যান্ডলিং,
  • ডুপ্লিকেট রেকর্ড সরানো,
  • ডেটা স্কেলিং,
  • ক্যাটেগোরিকাল ডেটা রূপান্তর,
  • আউটলায়ার হ্যান্ডলিং,
  • ফিচার ইঞ্জিনিয়ারিং

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

Content added By

ডেটা প্রি-প্রসেসিং হল একটি অত্যন্ত গুরুত্বপূর্ণ ধাপ যেটি মেশিন লার্নিং, ডেটা সায়েন্স এবং যেকোনো ডেটা বিশ্লেষণ প্রকল্পের প্রথম পর্যায়ে করা হয়। প্রকৃত ডেটা প্রায়ই অপরিষ্কার, অনির্ভরযোগ্য এবং অপ্রাসঙ্গিক হতে পারে, তাই সঠিকভাবে ডেটা প্রি-প্রসেসিং করা প্রয়োজন, যাতে এটি মডেলিংয়ের জন্য প্রস্তুত হয়।

নিচে ডেটা প্রি-প্রসেসিংয়ের কিছু গুরুত্বপূর্ণ প্রয়োজনীয়তা এবং কারণ আলোচনা করা হলো:


1. ডেটার গুণগত মান নিশ্চিত করা

ডেটা প্রি-প্রসেসিং এর মাধ্যমে ডেটার গুণগত মান নিশ্চিত করা যায়। প্রকৃত ডেটা সাধারণত মিসিং ভ্যালু, আউটলায়ার (Outliers), ডুপ্লিকেট রেকর্ড ইত্যাদি ধারণ করতে পারে, যা মডেল প্রশিক্ষণের জন্য উপযুক্ত নয়। এই সমস্যাগুলি দূর করতে প্রি-প্রসেসিং গুরুত্বপূর্ণ।

  • Missing Values: মিসিং ভ্যালু থাকলে মডেল ফলস ফলাফল দিতে পারে, যেমন: মিসিং মান পূরণ করা।
  • Duplicate Records: ডুপ্লিকেট রেকর্ড থাকলে সেগুলি সরিয়ে ডেটার পরিষ্কারতা বৃদ্ধি করা।

2. ডেটার স্বাভাবিকীকরণ এবং স্কেলিং

মেশিন লার্নিং অ্যালগরিদমগুলির বেশিরভাগই ডেটার স্কেল এবং বিভিন্ন এককের পার্থক্য অনুভব করতে পারে। তাই স্কেলিং বা স্বাভাবিকীকরণ (Normalization) প্রয়োজনীয়, যাতে সব ফিচার একটি সাধারণ স্কেলে থাকে, যেমন 0 থেকে 1, বা -1 থেকে 1 এর মধ্যে।

  • Min-Max Scaling: ফিচারের মানকে একটি নির্দিষ্ট রেঞ্জে রূপান্তর করা।
  • Standardization: ডেটার গড় এবং স্ট্যান্ডার্ড ডিভিয়েশন ব্যবহার করে মান স্কেল করা।

3. বিভিন্ন ডেটার ধরন একত্রিত করা

একই ডেটাসেটে বিভিন্ন ডেটার ধরন থাকতে পারে, যেমন নম্বরিক (Numerical) এবং ক্যাটেগরিকাল (Categorical) ডেটা। এগুলিকে একত্রিত করতে প্রি-প্রসেসিং প্রয়োজন, যেমন:

  • Encoding: ক্যাটেগরিকাল ডেটাকে নম্বরিক ফর্মে রূপান্তর করা, যেমন One-Hot Encoding অথবা Label Encoding
  • Feature Engineering: নতুন ফিচার তৈরি বা অপ্রয়োজনীয় ফিচার অপসারণ।

4. আউটলায়ার হ্যান্ডলিং

আউটলায়ার হল এমন ডেটা পয়েন্ট যা বাকি ডেটা পয়েন্টগুলির থেকে অনেক দূরে থাকে। এগুলি মডেল ট্রেনিংয়ে সমস্যা তৈরি করতে পারে। তাই আউটলায়ার চিহ্নিত করা এবং সেগুলি যথাযথভাবে হ্যান্ডলিং করা প্রয়োজন। যেমন:

  • IQR (Interquartile Range) ব্যবহার করে আউটলায়ার চিহ্নিত করা এবং তাদের অপসারণ করা।
  • আউটলায়ার মূল্যায়ন করে প্রক্রিয়া করা, অথবা তাদের স্থানান্তর করা।

5. ডেটার সঠিক ফরম্যাটে রূপান্তর

মডেলিংয়ের জন্য ডেটা সঠিক ফরম্যাটে থাকতে হবে। যেমন:

  • Datetime Columns: তারিখ সম্পর্কিত ডেটাকে একক টাইম স্ট্যাম্প বা ডেটা ফরম্যাটে রূপান্তর করা।
  • Categorical Data: ক্যাটেগরিকাল ডেটাকে কৌশলগতভাবে নম্বরিক রূপে রূপান্তর করা।

6. মডেল ট্রেনিং এর জন্য প্রস্তুতি

মডেল ট্রেনিংয়ের জন্য ডেটাকে প্রস্তুত করা প্রি-প্রসেসিংয়ের অন্যতম লক্ষ্য। মডেল যদি ভুল বা অপরিষ্কার ডেটা নিয়ে ট্রেনিং নেয়, তবে তার কার্যকারিতা কম হবে। ডেটা প্রি-প্রসেসিং এর মাধ্যমে ডেটা মডেল ট্রেনিংয়ের জন্য উপযুক্ত এবং কার্যকরী করা হয়।

  • Train-Test Split: ডেটাকে ট্রেনিং এবং টেস্ট সেটে ভাগ করা।
  • Cross-Validation: ডেটার ওপর ক্রস-ভ্যালিডেশন ব্যবহার করে মডেলের পারফরম্যান্স নিশ্চিত করা।

7. বিভিন্ন মডেলগুলির জন্য ডেটার প্রস্তুতি

প্রতিটি মডেল আলাদা আলাদা ডেটার ধরন এবং পরিসীমার ওপর নির্ভর করে। কিছু মডেল যেমন লিনিয়ার রিগ্রেশন এবং লজিস্টিক রিগ্রেশন রৈখিক সম্পর্কের ওপর কাজ করে, যখন কিছু মডেল যেমন ডিসিশন ট্রি বা র‍্যান্ডম ফরেস্ট ডেটার অ-রৈখিক সম্পর্কের উপর কাজ করে। ডেটা প্রি-প্রসেসিং এর মাধ্যমে ডেটা মডেলিংয়ের জন্য উপযুক্ত এবং কাস্টমাইজড হয়।

8. ডেটা বিশ্লেষণের সঠিকতা এবং নির্ভুলতা

ডেটা প্রি-প্রসেসিং সঠিকভাবে সম্পন্ন না হলে ডেটার বিশ্লেষণ বা ফলাফল হতে পারে ভুল। ডেটার অপ্রয়োজনীয় বা অপ্রাসঙ্গিক অংশগুলি সরানো, অপ্রয়োজনীয় ফিচার বাদ দেওয়া, এবং ডেটার সঠিক ফরম্যাট নিশ্চিত করা মডেলকে আরও নির্ভুল করে তোলে।


সারাংশ:

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

  1. ডেটার গুণগত মান বৃদ্ধি করা।
  2. মডেলের পারফরম্যান্স উন্নত করা।
  3. মডেল প্রশিক্ষণের জন্য ডেটাকে প্রস্তুত করা।

সঠিক ডেটা প্রি-প্রসেসিং ছাড়া, মডেল ভালো ফলাফল দিতে সক্ষম হবে না, তাই এটি মেশিন লার্নিং প্রক্রিয়ার একটি গুরুত্বপূর্ণ ধাপ।

Content added By

ডেটা সায়েন্স এবং মেশিন লার্নিং প্রোজেক্টে ডেটার মধ্যে missing values (অনুপস্থিত মান) একটি সাধারণ সমস্যা। এই ধরনের অনুপস্থিত ডেটা পরিচালনা করা অত্যন্ত গুরুত্বপূর্ণ, কারণ মডেল ট্রেনিং এবং বিশ্লেষণ সঠিকভাবে কাজ না করতে পারে যদি ডেটাতে গ্যাপ থাকে। Missing data হ্যান্ডলিংয়ের জন্য Mean, Median, এবং Mode এর মতো কৌশলগুলি ব্যাপকভাবে ব্যবহৃত হয়।

এখানে, আমরা দেখব কিভাবে Python এর pandas লাইব্রেরি ব্যবহার করে Missing Data হ্যান্ডল করা যায়।


1. Missing Data চেক করা

প্রথমে ডেটাতে কতটি missing values আছে তা চেক করা।

import pandas as pd

# ডেটাসেট লোড করা
df = pd.read_csv('data.csv')

# Missing values চেক করা
print(df.isnull().sum())

এই কমান্ডটি ডেটাসেটের প্রতি কলামে কতটি missing value আছে তা দেখাবে।


2. Missing Data হ্যান্ডলিং - Mean, Median, Mode

অনেক সময় missing values গুলি Mean, Median, অথবা Mode দিয়ে পূর্ণ করা হয়। যেটি উপযুক্ত হতে পারে তা নির্ভর করে ডেটার প্রকারের উপর।

(a) Mean দিয়ে Missing Data পূর্ণ করা

Mean (গড়) পূর্ণ করার জন্য, সাধারণত নিউমেরিক্যাল কলাম গুলিতে এটি ব্যবহার করা হয়।

# Numeric কলামগুলির জন্য Mean দিয়ে Missing Data পূর্ণ করা
df['column_name'] = df['column_name'].fillna(df['column_name'].mean())

এখানে:

  • column_name হল সেই কলাম যেখানে missing data রয়েছে।
  • fillna() ফাংশনটি missing value গুলিকে Mean দিয়ে পূর্ণ করবে।

(b) Median দিয়ে Missing Data পূর্ণ করা

Median (মধ্যম মান) গড়ের থেকে কম সংবেদনশীল, বিশেষত যখন ডেটা সিস্টেমেটিকালি স্কিউড (skewed) থাকে। স্কিউড ডেটার জন্য Median ব্যবহার করা ভাল।

# Numeric কলামগুলির জন্য Median দিয়ে Missing Data পূর্ণ করা
df['column_name'] = df['column_name'].fillna(df['column_name'].median())

(c) Mode দিয়ে Missing Data পূর্ণ করা

Mode (সর্বাধিক পুনরাবৃত্ত মান) ক্যাটেগরিক্যাল ডেটার জন্য ব্যবহার করা হয়, যেখানে প্রতিটি মান কতবার এসেছে তা গুরুত্বপূর্ণ।

# ক্যাটেগোরিক্যাল কলামের জন্য Mode দিয়ে Missing Data পূর্ণ করা
df['column_name'] = df['column_name'].fillna(df['column_name'].mode()[0])

এখানে:

  • mode()[0] হল সেই কলামের প্রথম Mode মান (যদি একাধিক Mode থাকে)।

3. Multiple Columns এ Missing Data পূর্ণ করা

আপনি একাধিক কলামে Missing Values হ্যান্ডল করতে চাইলে, নিচের মতো কোড ব্যবহার করতে পারেন:

# সব কলামের জন্য Mean দিয়ে Missing Data পূর্ণ করা
df.fillna(df.mean(), inplace=True)

# সব কলামের জন্য Median দিয়ে Missing Data পূর্ণ করা
df.fillna(df.median(), inplace=True)

# সব কলামের জন্য Mode দিয়ে Missing Data পূর্ণ করা
for column in df.select_dtypes(include=['object']).columns:
    df[column].fillna(df[column].mode()[0], inplace=True)

এই কোডে:

  • Mean, Median, এবং Mode ব্যবহার করে সব কলামে missing values পূর্ণ করা হচ্ছে।

4. Missing Data ড্রপ করা

কখনও কখনও, ডেটা হ্যান্ডল করার পরিবর্তে, অনুপস্থিত মানগুলো সরানো ভাল হতে পারে। আপনি dropna() ফাংশন ব্যবহার করে missing rows বা columns বাদ দিতে পারেন।

(a) Missing Row ড্রপ করা:

df = df.dropna()  # যেখানে Missing Values আছে সেই rows সরিয়ে ফেলা

(b) Missing Column ড্রপ করা:

df = df.dropna(axis=1)  # যেখানে Missing Values আছে সেই columns সরিয়ে ফেলা

5. Visualization করে Missing Data বিশ্লেষণ করা

Missing Data বিশ্লেষণের জন্য ভিজ্যুয়ালাইজেশন একটি কার্যকরী পদ্ধতি। Seaborn বা Matplotlib ব্যবহার করে Missing Data দেখতে পারেন।

import seaborn as sns

# Missing Data Visualization
sns.heatmap(df.isnull(), cbar=False, cmap='viridis')

এটি একটি heatmap তৈরি করবে, যেখানে Missing Data গুলি হল উজ্জ্বল (yellow) এবং উপস্থিত ডেটা গুলি গা dark (purple) হবে।


সারাংশ

  • Missing data পূর্ণ করতে আপনি Mean, Median, বা Mode ব্যবহার করতে পারেন, যা ডেটার ধরন এবং প্রয়োজনীয়তার উপর নির্ভর করে।
  • Mean ব্যবহার করা হয় নিউমেরিক্যাল ডেটার জন্য, Median ব্যবহার করা হয় স্কিউড ডেটার জন্য, এবং Mode ব্যবহার করা হয় ক্যাটেগরিক্যাল ডেটার জন্য।
  • ডেটাতে missing rows বা columns মুছে ফেলা যায় dropna() ফাংশন ব্যবহার করে।
Content added By

Categorical ডেটা হল এমন ধরনের ডেটা যা নির্দিষ্ট শ্রেণীতে (categories) ভাগ করা থাকে, যেমন: লিঙ্গ (পুরুষ/মহিলা), দেশ (বাংলাদেশ, ভারত, যুক্তরাষ্ট্র), রঙ (লাল, নীল, সবুজ) ইত্যাদি। মেশিন লার্নিং মডেলগুলি সাধারণত সংখ্যাত্মক ডেটা নিয়ে কাজ করে, তাই categorical ডেটা রূপান্তর করা প্রয়োজন। এতে One-Hot Encoding এবং Label Encoding দুটি সাধারণ পদ্ধতি ব্যবহৃত হয়।

নিচে এই দুটি পদ্ধতির বিস্তারিত আলোচনা দেওয়া হলো।


1. Label Encoding

Label Encoding হল একটি সাধারণ পদ্ধতি যেখানে প্রতিটি ক্যাটেগরি বা শ্রেণীকে একটি নির্দিষ্ট সংখ্যা দিয়ে রিপ্লেস করা হয়। যেমন:

  • "পুরুষ" → 0
  • "মহিলা" → 1

এই পদ্ধতিটি সাধারণত অর্ডিনাল ক্যাটেগরি (যেগুলির মধ্যে একটি ক্রম আছে) ডেটার জন্য ব্যবহার করা হয়। যেমন: শিক্ষা স্তর (মাধ্যমিক = 1, উচ্চমাধ্যমিক = 2, স্নাতক = 3)।

Label Encoding কিভাবে করা হয়:

import pandas as pd
from sklearn.preprocessing import LabelEncoder

# উদাহরণ ডেটা
data = {'Gender': ['Male', 'Female', 'Female', 'Male', 'Female']}
df = pd.DataFrame(data)

# LabelEncoder তৈরি করা
label_encoder = LabelEncoder()

# Gender কলামের জন্য লেবেল এনকোডিং করা
df['Gender_encoded'] = label_encoder.fit_transform(df['Gender'])

print(df)

আউটপুট:

   Gender  Gender_encoded
0    Male               1
1  Female               0
2  Female               0
3    Male               1
4  Female               0

2. One-Hot Encoding

One-Hot Encoding হল একটি পদ্ধতি যেখানে প্রতিটি ক্যাটেগরিকে একটি নতুন কলামে রূপান্তর করা হয় এবং প্রতিটি ক্যাটেগরির জন্য 1 বা 0 (যদি সেই ক্যাটেগরি উপস্থিত থাকে বা না থাকে) বসানো হয়। এটি সাধারণত নন-অর্ডিনাল ক্যাটেগরি ডেটার জন্য ব্যবহৃত হয় (যেমন: দেশ, রঙ, শহর ইত্যাদি), যেখানে কোন প্রকার ক্রম বা ধারা নেই।

One-Hot Encoding কিভাবে করা হয়:

import pandas as pd

# উদাহরণ ডেটা
data = {'Color': ['Red', 'Blue', 'Green', 'Blue', 'Red']}
df = pd.DataFrame(data)

# One-Hot Encoding করা
df_one_hot = pd.get_dummies(df['Color'])

# মূল DataFrame-এর সাথে One-Hot Encoded কলাম যোগ করা
df = pd.concat([df, df_one_hot], axis=1)

print(df)

আউটপুট:

   Color  Blue  Green  Red
0    Red     0      0    1
1   Blue     1      0    0
2  Green     0      1    0
3   Blue     1      0    0
4    Red     0      0    1

এখানে, get_dummies() ফাংশনটি "Color" কলামের প্রত্যেকটি ইউনিক ক্যাটেগরি (Red, Blue, Green) এর জন্য একটি নতুন কলাম তৈরি করে এবং তার মান 0 বা 1 দিয়ে নির্ধারণ করে, যেখানে 1 নির্ধারণ করে যে ঐ শ্রেণীটি উপস্থিত রয়েছে এবং 0 নির্ধারণ করে যে তা উপস্থিত নেই।


3. কখন কোন পদ্ধতি ব্যবহার করবেন?

  • Label Encoding:
    • এটি সাধারণত অর্ডিনাল ডেটা (যেখানে ক্যাটেগরির মধ্যে একটি নির্দিষ্ট ক্রম বা ধারা থাকে) ব্যবহৃত হয়।
    • উদাহরণ: "Low", "Medium", "High" → 0, 1, 2।
  • One-Hot Encoding:
    • এটি সাধারণত নন-অর্ডিনাল ডেটা (যেখানে ক্যাটেগরির মধ্যে কোন নির্দিষ্ট ক্রম বা সম্পর্ক নেই) ব্যবহৃত হয়।
    • উদাহরণ: "Red", "Blue", "Green" → 3টি আলাদা কলাম তৈরি হবে।

4. সীমাবদ্ধতা

  • Label Encoding:
    • সমস্যাটি হতে পারে, কারণ এটি মডেলকে এটি ভাবাতে পারে যে 0, 1, 2 ইত্যাদি মানের মধ্যে কোনো রৈখিক সম্পর্ক আছে (যেটি আসলে হতে পারে না)। তাই এটি সাধারণত অর্ডিনাল ডেটার জন্য ব্যবহৃত হয়।
  • One-Hot Encoding:
    • এটি ডেটার আকার বাড়িয়ে দেয়, বিশেষ করে যখন ক্যাটেগরির সংখ্যা অনেক বেশি থাকে (high cardinality)। এতে মেমরি ব্যবহারে সমস্যা হতে পারে।

সারাংশ:

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

এই দুটি পদ্ধতি ব্যবহারের মাধ্যমে categorical ডেটা মেশিন লার্নিং মডেলগুলোর জন্য প্রস্তুত করা যেতে পারে।

Content added By

Feature Scaling: এবং Standardization

Feature Scaling হল একটি গুরুত্বপূর্ণ ডেটা প্রিপ্রসেসিং টেকনিক যা মেশিন লার্নিং মডেল ট্রেনিংয়ের আগে ইনপুট ফিচারগুলিকে সমান স্কেলে আনার প্রক্রিয়া। এটি বিশেষভাবে গুরুত্বপূর্ণ যখন আপনি মেশিন লার্নিং অ্যালগরিদম ব্যবহার করেন যা ফিচারের স্কেল অনুসারে কাজ করে, যেমন কনটিনিউয়াস ডেটা, কন্যিক মেট্রিক ব্যবহারকারী মডেল (যেমন ক্নন nearest neighbors, SVM, Logistic Regression) ইত্যাদি।

ফিচার স্কেলিং এর মূল দুটি পদ্ধতি হল:

  1. Normalization (Min-Max Scaling)
  2. Standardization (Z-score Scaling)

1. Normalization (Min-Max Scaling)

Normalization হল ফিচারের মানকে একটি নির্দিষ্ট সীমার মধ্যে আনা, সাধারণত 0 থেকে 1 অথবা -1 থেকে 1। এটি ফিচারের সর্বনিম্ন এবং সর্বোচ্চ মান ব্যবহার করে একটি স্কেল তৈরি করে।

নিচে Min-Max Scaling এর সূত্র:

Xnorm=Xmin(X)max(X)min(X)X_{\text{norm}} = \frac{X - \text{min}(X)}{\text{max}(X) - \text{min}(X)}

এখানে:

  • XX হলো মূল ফিচারের মান
  • min(X)\text{min}(X) হলো ফিচারের সর্বনিম্ন মান
  • max(X)\text{max}(X) হলো ফিচারের সর্বোচ্চ মান

যখন ব্যবহার করবেন:

  • যখন ডেটা গেটওয়ে বা কিউটোরিক্যাল নয়, তখন ব্যবহার করা হয়।
  • এটি তখন ভালো যখন ডেটার মধ্যে কিছু বৈশিষ্ট্য খুব বড় বা ছোট স্কেলে থাকে (যেমন: আয়, উচ্চতা ইত্যাদি)।

Python এ Normalization (Min-Max Scaling) এর উদাহরণ:

from sklearn.preprocessing import MinMaxScaler
import numpy as np

# ডেটা
data = np.array([[10, 200], [15, 300], [20, 400]])

# Min-Max স্কেলিং
scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(data)

print(scaled_data)

2. Standardization (Z-score Scaling)

Standardization বা Z-score Scaling হল একটি পদ্ধতি যা ফিচারের মানকে স্কেল করে এমনভাবে, যাতে তার মিডিয়ান 0 এবং স্ট্যান্ডার্ড ডেভিয়েশন 1 হয়। এতে সমস্ত ফিচার সমানভাবে গুরুত্বপূর্ণ হয়ে ওঠে এবং স্কেল ভিন্নতা কমে আসে।

নিচে Z-score Scaling এর সূত্র:

Xstand=XμσX_{\text{stand}} = \frac{X - \mu}{\sigma}

এখানে:

  • XX হলো মূল ফিচারের মান
  • μ\mu হলো ফিচারের গড় (mean)
  • σ\sigma হলো ফিচারের স্ট্যান্ডার্ড ডেভিয়েশন

যখন ব্যবহার করবেন:

  • যখন ডেটার মধ্যে আউটলায়ার বা খুব ভিন্ন ভিন্ন স্কেল থাকে।
  • যখন আপনি মডেল ব্যবহার করছেন যা গণনার ক্ষেত্রে গড় এবং ডেভিয়েশন নিয়ে কাজ করে (যেমন: লিনিয়ার রিগ্রেশন, SVM, k-means clustering)।

Python এ Standardization (Z-score Scaling) এর উদাহরণ:

from sklearn.preprocessing import StandardScaler
import numpy as np

# ডেটা
data = np.array([[10, 200], [15, 300], [20, 400]])

# Standardization
scaler = StandardScaler()
scaled_data = scaler.fit_transform(data)

print(scaled_data)

তুলনা: Normalization vs Standardization

বৈশিষ্ট্যNormalization (Min-Max Scaling)Standardization (Z-score Scaling)
স্কেল0 থেকে 1 অথবা -1 থেকে 1গড় 0 এবং স্ট্যান্ডার্ড ডেভিয়েশন 1
ফর্মুলাXnorm=Xmin(X)max(X)min(X)X_{\text{norm}} = \frac{X - \text{min}(X)}{\text{max}(X) - \text{min}(X)}Xstand=XμσX_{\text{stand}} = \frac{X - \mu}{\sigma}
ব্যবহারযোগ্যতাভালো যখন ডেটার স্কেল একরকম হয়ভালো যখন ডেটার স্কেল ভিন্ন ভিন্ন হয়
আউটলায়ার প্রভাবআউটলায়ার প্রভাবিত করে (কারণ সীমার মধ্যে স্কেল করা হয়)আউটলায়ার প্রভাবিত করে না (কারণ গড় এবং স্ট্যান্ডার্ড ডেভিয়েশন ব্যবহার করা হয়)

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

  • Normalization (Min-Max Scaling) ব্যবহার করুন যখন ডেটার মান সুনির্দিষ্ট সীমার মধ্যে আনার প্রয়োজন হয় (যেমন: 0 থেকে 1) এবং আউটলায়ার খুব বড় প্রভাব ফেলবে না।
  • Standardization (Z-score Scaling) ব্যবহার করুন যখন ডেটার মধ্যে আউটলায়ার থাকে অথবা আপনি এমন মডেল ব্যবহার করছেন যা গড় এবং স্ট্যান্ডার্ড ডেভিয়েশন নিয়ে কাজ করে (যেমন: লিনিয়ার রিগ্রেশন, SVM)।

সারাংশ:

  • Normalization: ফিচারের মান 0 থেকে 1 বা -1 থেকে 1 এর মধ্যে আনতে ব্যবহৃত হয়।
  • Standardization: ফিচারের গড় 0 এবং স্ট্যান্ডার্ড ডেভিয়েশন 1 আনতে ব্যবহৃত হয়।
  • সঠিক স্কেলিং পদ্ধতি ব্যবহার করা মডেলটির পারফরম্যান্স এবং সঠিকতা বাড়াতে সাহায্য করে।
Content added By
Promotion

Are you sure to start over?

Loading...