Categorical ডেটা Encoding (One-Hot Encoding, Label Encoding)

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

381

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
Promotion

Are you sure to start over?

Loading...