XGBoost-এ মিসিং ভ্যালু এবং ক্যাটেগোরিক্যাল ফিচার ম্যানেজমেন্ট খুবই গুরুত্বপূর্ণ, কারণ বাস্তব ডেটাসেটে এই দুটি চ্যালেঞ্জ প্রায়ই পাওয়া যায়। XGBoost স্বয়ংক্রিয়ভাবে মিসিং ভ্যালু এবং ক্যাটেগোরিক্যাল ফিচার ম্যানেজ করতে সক্ষম। নিচে উদাহরণসহ এই বিষয়গুলো কিভাবে হ্যান্ডেল করা যায় তা দেখানো হয়েছে।
উদাহরণ: XGBoost-এ মিসিং ভ্যালু এবং ক্যাটেগোরিক্যাল ফিচার হ্যান্ডেল করা
আমরা এখানে একটি কাস্টম ডেটাসেট ব্যবহার করব যেখানে মিসিং ভ্যালু এবং ক্যাটেগোরিক্যাল ফিচার রয়েছে। উদাহরণটি দেখাবে কিভাবে XGBoost দিয়ে এগুলো ম্যানেজ করা যায়।
১. প্রয়োজনীয় লাইব্রেরি ইমপোর্ট করা
pip install xgboost pandas scikit-learn
import xgboost as xgb
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
২. ডেটাসেট তৈরি করা
আমরা একটি কাস্টম ডেটাসেট তৈরি করব, যেখানে মিসিং ভ্যালু এবং ক্যাটেগোরিক্যাল ফিচার থাকবে।
# কাস্টম ডেটাসেট তৈরি করা
data = {
'feature1': [1, 2, None, 4, 5],
'feature2': ['A', 'B', 'B', None, 'A'],
'feature3': [10, None, 30, 40, 50],
'label': [0, 1, 0, 1, 0]
}
df = pd.DataFrame(data)
# ক্যাটেগোরিক্যাল ফিচার এনকোড করা (Label Encoding)
df['feature2'] = df['feature2'].astype('category').cat.codes
# ডেটা এবং লেবেল আলাদা করা
X = df[['feature1', 'feature2', 'feature3']]
y = df['label']
৩. ডেটা ট্রেন-টেস্ট স্প্লিট করা
# ডেটা ট্রেন এবং টেস্ট সেটে ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
৪. XGBoost ডেটা ম্যাট্রিক্স তৈরি করা
# ডেটা ম্যাট্রিক্স তৈরি করা
dtrain = xgb.DMatrix(X_train, label=y_train, missing=None) # None মিসিং ভ্যালু হিসেবে উল্লেখ করা
dtest = xgb.DMatrix(X_test, label=y_test, missing=None)
৫. মডেল ট্রেনিং করা
# XGBoost প্যারামিটার সেট করা
params = {
'objective': 'binary:logistic', # বাইনারি ক্লাসিফিকেশন
'eval_metric': 'logloss' # লগ লস মেট্রিক
}
# মডেল ট্রেনিং করা
num_rounds = 10
model = xgb.train(params, dtrain, num_rounds)
৬. প্রেডিকশন এবং মডেল ইভ্যালুয়েশন
# টেস্ট সেটে প্রেডিকশন করা
y_pred = model.predict(dtest)
y_pred = [1 if i > 0.5 else 0 for i in y_pred] # থ্রেশোল্ডিং করা
# একুরেসি স্কোর গণনা করা
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy * 100:.2f}%")
পুরো কোড
import xgboost as xgb
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# কাস্টম ডেটাসেট তৈরি করা
data = {
'feature1': [1, 2, None, 4, 5],
'feature2': ['A', 'B', 'B', None, 'A'],
'feature3': [10, None, 30, 40, 50],
'label': [0, 1, 0, 1, 0]
}
df = pd.DataFrame(data)
# ক্যাটেগোরিক্যাল ফিচার এনকোড করা (Label Encoding)
df['feature2'] = df['feature2'].astype('category').cat.codes
# ডেটা এবং লেবেল আলাদা করা
X = df[['feature1', 'feature2', 'feature3']]
y = df['label']
# ডেটা ট্রেন এবং টেস্ট সেটে ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# ডেটা ম্যাট্রিক্স তৈরি করা
dtrain = xgb.DMatrix(X_train, label=y_train, missing=None)
dtest = xgb.DMatrix(X_test, label=y_test, missing=None)
# XGBoost প্যারামিটার সেট করা
params = {
'objective': 'binary:logistic', # বাইনারি ক্লাসিফিকেশন
'eval_metric': 'logloss' # লগ লস মেট্রিক
}
# মডেল ট্রেনিং করা
num_rounds = 10
model = xgb.train(params, dtrain, num_rounds)
# টেস্ট সেটে প্রেডিকশন করা
y_pred = model.predict(dtest)
y_pred = [1 if i > 0.5 else 0 for i in y_pred]
# একুরেসি স্কোর গণনা করা
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy * 100:.2f}%")
ব্যাখ্যা
মিসিং ভ্যালু ম্যানেজমেন্ট: XGBoost স্বয়ংক্রিয়ভাবে মিসিং ভ্যালু হ্যান্ডেল করতে পারে। ডেটাসেট তৈরির সময় আমরা None দিয়ে মিসিং ভ্যালু উল্লেখ করেছি এবং ডেটা ম্যাট্রিক্স তৈরি করার সময় missing=None ব্যবহার করেছি।
ক্যাটেগোরিক্যাল ফিচার ম্যানেজমেন্ট: PyTorch-এর মত XGBoost নিজে থেকে ক্যাটেগোরিক্যাল ভ্যালু এনকোড করতে পারে না, তাই আমরা Label Encoding ব্যবহার করে ক্যাটেগোরিক্যাল ভ্যালু এনকোড করেছি। এখানে আমরা প্যান্ডাসের .cat.codes ব্যবহার করেছি যা ক্যাটেগোরিক্যাল ভ্যালুকে কোডে পরিণত করে।
সারসংক্ষেপ
XGBoost মিসিং ভ্যালু এবং ক্যাটেগোরিক্যাল ফিচার হ্যান্ডেল করতে সক্ষম এবং এই উদাহরণটি দেখায় কিভাবে আপনি সহজেই এটি প্রয়োগ করতে পারেন। Regularization এবং অন্যান্য প্যারামিটার ঠিকমত সেট করে মডেল ইভ্যালুয়েশনের মাধ্যমে মডেলটির কার্যকারিতা নিশ্চিত করতে পারেন।
Read more