ডেটা প্রি-প্রসেসিং হল মেশিন লার্নিং বা ডেটা সায়েন্স প্রজেক্টের প্রথম এবং গুরুত্বপূর্ণ ধাপ। এই প্রক্রিয়া ডেটাকে পরিষ্কার, সমন্বিত এবং মডেল ট্রেনিংয়ের জন্য প্রস্তুত করতে সাহায্য করে। ডেটা প্রি-প্রসেসিং এর মধ্যে বিভিন্ন ধাপ অন্তর্ভুক্ত থাকে, যেমন মিসিং ডেটা হ্যান্ডলিং, কেটেগোরিক্যাল ভেরিয়েবলের এনকোডিং, স্কেলিং, স্ট্যান্ডার্ডাইজেশন ইত্যাদি। এই প্রসেসগুলি মডেলিংয়ের ক্ষেত্রে গুরুত্বপূর্ণ ভূমিকা রাখে এবং সঠিক ফলাফল পাওয়ার সম্ভাবনা বাড়ায়।
১. Missing Data (মিসিং ডেটা)
মিসিং ডেটা হল সেই সমস্ত মান যা কোনো কারণে ডেটাসেট থেকে অনুপস্থিত থাকে। মিসিং ডেটা খুব সাধারণ একটি সমস্যা এবং মেশিন লার্নিং মডেল ট্রেনিংয়ের জন্য এটি খুবই গুরুত্বপূর্ণ। মিসিং ডেটার কারণে মডেল সঠিকভাবে প্রশিক্ষিত হতে পারে না এবং এর ফলস্বরূপ মডেলের পারফরম্যান্স কমে যেতে পারে।
মিসিং ডেটা হ্যান্ডলিং এর পদ্ধতি:
- মিসিং ডেটা চিহ্নিত করা:
- প্রথমে মিসিং ডেটা চিহ্নিত করতে হবে। সাধারণত NaN (Not a Number) বা null মানকে মিসিং ডেটা হিসেবে চিহ্নিত করা হয়।
মিসিং ডেটা পূরণ (Imputation):
- ক্যাটেগোরিক্যাল ডেটা: ক্যাটেগোরিক্যাল কলামে, মিসিং মানটি সাধারণত সবচেয়ে সাধারণ মান (Mode) দিয়ে পূর্ণ করা হয়।
- নমেরিক ডেটা: নমেরিক কলামে, মিসিং মানটি গড় (Mean), মধ্যম (Median), বা সর্বাধিক মান (Mode) দিয়ে পূর্ণ করা যায়।
উদাহরণ:
import pandas as pd from sklearn.impute import SimpleImputer # ডেটাসেট তৈরি করা data = {'Age': [25, 30, None, 35, 40], 'Salary': [50000, 60000, 70000, None, 80000]} df = pd.DataFrame(data) # Imputer তৈরি করা এবং Age ও Salary কলামে গড় দিয়ে মিসিং ডেটা পূর্ণ করা imputer = SimpleImputer(strategy='mean') df[['Age', 'Salary']] = imputer.fit_transform(df[['Age', 'Salary']]) print(df)মিসিং ডেটা সরানো:
- যদি ডেটার মধ্যে মিসিং মান বেশি পরিমাণে থাকে, তবে আপনি ওই সারি বা কলামগুলো বাদ দিতে পারেন। তবে, এটি সাধারণত যখন মিসিং ডেটা খুব বেশি পরিমাণে থাকে, তখন ব্যবহার করা হয়।
df.dropna(inplace=True)
২. Encoding Categorical Variables (কেটেগোরিক্যাল ভেরিয়েবলের এনকোডিং)
মেশিন লার্নিং মডেলগুলির জন্য সাধারণত কেটেগোরিক্যাল ভেরিয়েবলগুলি (যেমন 'লিঙ্গ', 'দেশ', 'শ্রেণী') সঠিকভাবে এনকোড (সংকেত) করতে হয়। কারণ অধিকাংশ মডেল শুধুমাত্র সংখ্যাগত ডেটা নিয়ে কাজ করতে পারে, কেটেগোরিক্যাল ডেটাকে সংখ্যায় রূপান্তর করতে হবে।
কেটেগোরিক্যাল ভেরিয়েবলের এনকোডিং পদ্ধতি:
Label Encoding:
- এই পদ্ধতিতে, প্রতিটি কেটেগোরিক্যাল মানকে একটি অনন্য সংখ্যা দিয়ে উপস্থাপন করা হয়। উদাহরণস্বরূপ, 'Male' কে 0 এবং 'Female' কে 1 দিয়ে এনকোড করা যেতে পারে। তবে, এই পদ্ধতিটি কোনো ধরণের শ্রেণীভিত্তিক সম্পর্ক তৈরি করতে পারে না, এবং কখনও কখনও তা মডেলকে বিভ্রান্ত করতে পারে।
উদাহরণ:
from sklearn.preprocessing import LabelEncoder # ডেটাসেট data = {'Gender': ['Male', 'Female', 'Female', 'Male']} df = pd.DataFrame(data) # লেবেল এনকোডিং encoder = LabelEncoder() df['Gender'] = encoder.fit_transform(df['Gender']) print(df)One-Hot Encoding:
- এই পদ্ধতিতে, প্রতিটি কেটেগোরিক্যাল ভেরিয়েবলকে নতুন কলামে রূপান্তর করা হয়। একেকটি কেটেগোরিক্যাল মানের জন্য একেকটি কলাম তৈরি করা হয় এবং ওই মানের জন্য 1 বা 0 দেওয়া হয়। এটি শ্রেণীভিত্তিক সম্পর্ক তৈরিতে সহায়ক এবং যখন কেটেগোরিক্যাল মানগুলি ধারাবাহিক না হয় তখন ব্যবহার করা হয়।
উদাহরণ:
df = pd.DataFrame({'Gender': ['Male', 'Female', 'Female', 'Male']}) # One-Hot Encoding df = pd.get_dummies(df, columns=['Gender']) print(df)- Binary Encoding:
- এটি একটি উন্নত পদ্ধতি যেখানে কেটেগোরিক্যাল মানকে বাইনারি কোডের মাধ্যমে এনকোড করা হয়, সাধারণত উচ্চ সংখ্যক শ্রেণীভিত্তিক কেটেগোরিক্যাল ডেটার জন্য এটি ব্যবহৃত হয়।
সারাংশ
ডেটা প্রি-প্রসেসিং হল মেশিন লার্নিং মডেল তৈরির প্রথম পদক্ষেপ এবং সঠিক ডেটা প্রক্রিয়াকরণ মডেল প্রশিক্ষণ ও পারফরম্যান্সে বড় প্রভাব ফেলে। এর মধ্যে দুটি প্রধান ধাপ হলো:
- Missing Data Handling: মিসিং ডেটা পূরণ বা সরানোর মাধ্যমে ডেটা পরিষ্কার করা।
- Encoding Categorical Variables: কেটেগোরিক্যাল ভেরিয়েবলগুলিকে সংখ্যায় রূপান্তর (এনকোডিং) করে মডেলের জন্য প্রস্তুত করা।
এছাড়া, ডেটা প্রি-প্রসেসিংয়ে স্কেলিং, স্ট্যান্ডার্ডাইজেশন এবং আউটলায়ার ডিটেকশনও গুরুত্বপূর্ণ ভূমিকা পালন করে।
Read more