মেশিন লার্নিং প্রজেক্টে Model Training, Evaluation, এবং Prediction তিনটি গুরুত্বপূর্ণ পদক্ষেপ। এখানে LightGBM ব্যবহার করে কিভাবে এই প্রক্রিয়াগুলি সম্পন্ন করা যায়, তা বিস্তারিতভাবে আলোচনা করা হলো।
১. Model Training
প্রথমত, আমরা LightGBM ব্যবহার করে মডেল প্রশিক্ষণের জন্য একটি মৌলিক উদাহরণ দেখাবো।
ডেটাসেট তৈরি করা
চলুন প্রথমে একটি কৃত্রিম ডেটাসেট তৈরি করি এবং LightGBM ডেটাসেটে রূপান্তর করি।
import lightgbm as lgb
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
# উদাহরণস্বরূপ, কৃত্রিম ডেটাসেট তৈরি করা
data = np.random.rand(1000, 10) # 1000টি নমুনা এবং 10টি বৈশিষ্ট্য
labels = np.random.randint(2, size=1000) # 0 বা 1 লেবেল
# ডেটাসেটকে ডাটা ফ্রেমে রূপান্তর
df = pd.DataFrame(data, columns=[f'feature_{i}' for i in range(10)])
df['label'] = labels
# ডেটাকে ট্রেন এবং টেস্ট সেটে ভাগ করা
X = df.drop('label', axis=1)
y = df['label']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# LightGBM Dataset তৈরি
train_data = lgb.Dataset(X_train, label=y_train)
test_data = lgb.Dataset(X_test, label=y_test, reference=train_data)
মডেল প্রশিক্ষণ
এখন LightGBM ব্যবহার করে মডেল প্রশিক্ষণ করা যাক।
# মডেল প্যারামিটার সেট করা
params = {
'objective': 'binary',
'metric': 'binary_logloss',
'boosting_type': 'gbdt',
'learning_rate': 0.1,
'num_leaves': 31
}
# মডেল ট্রেনিং
model = lgb.train(params, train_data, num_boost_round=100, valid_sets=test_data, early_stopping_rounds=10)
২. Model Evaluation
মডেলটির কার্যকারিতা পর্যালোচনা করতে হবে। আমরা সাধারণত কিছু মেট্রিক ব্যবহার করি, যেমন Accuracy, F1 Score, Precision, এবং Recall।
from sklearn.metrics import accuracy_score, f1_score, precision_score, recall_score
# টেস্ট সেটের উপর পূর্বাভাস করা
predictions = model.predict(X_test, num_iteration=model.best_iteration)
predicted_classes = [1 if pred > 0.5 else 0 for pred in predictions]
# মেট্রিকস গণনা করা
accuracy = accuracy_score(y_test, predicted_classes)
f1 = f1_score(y_test, predicted_classes)
precision = precision_score(y_test, predicted_classes)
recall = recall_score(y_test, predicted_classes)
# ফলাফল প্রিন্ট করা
print(f'Accuracy: {accuracy:.2f}')
print(f'F1 Score: {f1:.2f}')
print(f'Precision: {precision:.2f}')
print(f'Recall: {recall:.2f}')
৩. Prediction
শেষে, আমরা নতুন ডেটার উপর প্রেডিকশন করতে পারি। ধরা যাক, আমাদের কাছে একটি নতুন ডেটাসেট আছে এবং আমরা সেটির উপর মডেলটিকে পরীক্ষা করতে চাই।
# নতুন ডেটা তৈরি (এটি আসলে বাস্তব জীবনের ডেটা হবে)
new_data = np.random.rand(5, 10) # 5টি নতুন নমুনা
# নতুন ডেটাকে DataFrame এ রূপান্তর
new_df = pd.DataFrame(new_data, columns=[f'feature_{i}' for i in range(10)])
# নতুন ডেটার উপর পূর্বাভাস করা
new_predictions = model.predict(new_df, num_iteration=model.best_iteration)
new_predicted_classes = [1 if pred > 0.5 else 0 for pred in new_predictions]
# নতুন পূর্বাভাস ফলাফল প্রিন্ট করা
print("New Predictions:", new_predicted_classes)
সম্পূর্ণ কোড
এখন আমরা উপরে বর্ণিত সবকিছু একত্রিত করে একটি পূর্ণ কোড উদাহরণ প্রদান করছি:
import lightgbm as lgb
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, f1_score, precision_score, recall_score
# উদাহরণস্বরূপ, কৃত্রিম ডেটাসেট তৈরি করা
data = np.random.rand(1000, 10) # 1000টি নমুনা এবং 10টি বৈশিষ্ট্য
labels = np.random.randint(2, size=1000) # 0 বা 1 লেবেল
# ডেটাসেটকে ডাটা ফ্রেমে রূপান্তর
df = pd.DataFrame(data, columns=[f'feature_{i}' for i in range(10)])
df['label'] = labels
# ডেটাকে ট্রেন এবং টেস্ট সেটে ভাগ করা
X = df.drop('label', axis=1)
y = df['label']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# LightGBM Dataset তৈরি
train_data = lgb.Dataset(X_train, label=y_train)
test_data = lgb.Dataset(X_test, label=y_test, reference=train_data)
# মডেল প্যারামিটার সেট করা
params = {
'objective': 'binary',
'metric': 'binary_logloss',
'boosting_type': 'gbdt',
'learning_rate': 0.1,
'num_leaves': 31
}
# মডেল ট্রেনিং
model = lgb.train(params, train_data, num_boost_round=100, valid_sets=test_data, early_stopping_rounds=10)
# টেস্ট সেটের উপর পূর্বাভাস করা
predictions = model.predict(X_test, num_iteration=model.best_iteration)
predicted_classes = [1 if pred > 0.5 else 0 for pred in predictions]
# মেট্রিকস গণনা করা
accuracy = accuracy_score(y_test, predicted_classes)
f1 = f1_score(y_test, predicted_classes)
precision = precision_score(y_test, predicted_classes)
recall = recall_score(y_test, predicted_classes)
# ফলাফল প্রিন্ট করা
print(f'Accuracy: {accuracy:.2f}')
print(f'F1 Score: {f1:.2f}')
print(f'Precision: {precision:.2f}')
print(f'Recall: {recall:.2f}')
# নতুন ডেটার উপর পূর্বাভাস করা
new_data = np.random.rand(5, 10) # 5টি নতুন নমুনা
new_df = pd.DataFrame(new_data, columns=[f'feature_{i}' for i in range(10)])
new_predictions = model.predict(new_df, num_iteration=model.best_iteration)
new_predicted_classes = [1 if pred > 0.5 else 0 for pred in new_predictions]
# নতুন পূর্বাভাস ফলাফল প্রিন্ট করা
print("New Predictions:", new_predicted_classes)
উপসংহার
এখন আপনি LightGBM ব্যবহার করে একটি মডেল প্রশিক্ষণ, মূল্যায়ন এবং পূর্বাভাস দেওয়ার সম্পূর্ণ প্রক্রিয়া জানেন। এই পদক্ষেপগুলি মেশিন লার্নিং প্রজেক্টের মৌলিক অংশ এবং এগুলি সঠিকভাবে পরিচালনা করা অত্যন্ত গুরুত্বপূর্ণ। LightGBM এর উচ্চ কার্যকারিতা এবং দ্রুত প্রশিক্ষণ বৈশিষ্ট্যগুলি এটিকে একটি শক্তিশালী টুল হিসেবে পরিণত করে।
Read more