Scikit-learn দিয়ে Naive Bayes Classifier তৈরি করা

Naive Bayes Classifier - পাইথন দিয়ে মেশিন লার্নিং (Machine Learning with Python) - Machine Learning

290

Naive Bayes ক্লাসিফিকেশন অ্যালগরিদম একটি জনপ্রিয় পরিসংখ্যানিক মেশিন লার্নিং অ্যালগরিদম, যা মূলত বায়েজ থিওরেম (Bayes Theorem) এর উপর ভিত্তি করে কাজ করে। এই অ্যালগরিদমটি শ্রেণীবিভাগ সমস্যা সমাধানে ব্যবহৃত হয় এবং একে সাধারণত টেক্সট ক্লাসিফিকেশন (যেমন, স্প্যাম ফিল্টারিং) এবং অন্যান্য ক্যাটেগোরিকাল ডেটা সেটের জন্য ব্যবহার করা হয়।

Naive Bayes Classifier এর মূল ধারণা:

  • Naive Bayes অ্যালগরিদম "naive" বা সরল কারণ এটি ধরছে যে সমস্ত বৈশিষ্ট্য বা ফিচারের মধ্যে স্বতন্ত্রতা (independence) রয়েছে, অর্থাৎ এক ফিচারের মান অন্য ফিচারের মানের উপর নির্ভর করে না।
  • এটি বায়েজ থিওরেম ব্যবহার করে শ্রেণী নির্ধারণ করে:

    P(CX)=P(XC)P(C)P(X)P(C|X) = \frac{P(X|C)P(C)}{P(X)}

    যেখানে:

    • P(CX)P(C|X) হল ক্লাস CC এর সম্ভাবনা, যখন ইনপুট XX দেওয়া থাকে।
    • P(XC)P(X|C) হল ইনপুট XX এর সম্ভাবনা, যদি ক্লাস CC সঠিক হয়।
    • P(C)P(C) হল ক্লাস CC এর আগের সম্ভাবনা।
    • P(X)P(X) হল ইনপুট XX এর সম্ভাবনা।

Scikit-learn দিয়ে Naive Bayes Classifier তৈরি

এখানে আমরা Iris ডেটাসেট ব্যবহার করব এবং Multinomial Naive Bayes ক্লাসিফায়ার তৈরি করব।

প্রয়োজনীয় লাইব্রেরি ইনস্টল করা:

pip install scikit-learn matplotlib numpy pandas

কোড উদাহরণ: Iris ডেটাসেট ব্যবহার করে Naive Bayes Classifier

# প্রয়োজনীয় লাইব্রেরি ইমপোর্ট করা
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score, confusion_matrix
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris

# Iris ডেটাসেট লোড করা
iris = load_iris()
X = iris.data
y = iris.target

# ডেটাকে ট্রেনিং এবং টেস্ট সেটে ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Naive Bayes মডেল তৈরি করা (Gaussian Naive Bayes)
model = GaussianNB()

# মডেল প্রশিক্ষণ (ট্রেনিং)
model.fit(X_train, y_train)

# মডেল থেকে ভবিষ্যদ্বাণী করা
y_pred = model.predict(X_test)

# মডেল মূল্যায়ন
accuracy = accuracy_score(y_test, y_pred)
conf_matrix = confusion_matrix(y_test, y_pred)

print(f"Accuracy: {accuracy * 100:.2f}%")
print("Confusion Matrix:")
print(conf_matrix)

# কনফিউশন ম্যাট্রিক্সের ভিজ্যুয়ালাইজেশন
plt.figure(figsize=(5, 5))
plt.imshow(conf_matrix, interpolation='nearest', cmap=plt.cm.Blues)
plt.title('Confusion Matrix')
plt.colorbar()
tick_marks = np.arange(3)
plt.xticks(tick_marks, iris.target_names)
plt.yticks(tick_marks, iris.target_names)
plt.ylabel('True label')
plt.xlabel('Predicted label')
plt.show()

কোডের ব্যাখ্যা:

  1. ডেটাসেট লোড করা:
    • Iris ডেটাসেট লোড করা হয়েছে যা ৩টি শ্রেণী (Setosa, Versicolor, Virginica) নিয়ে গঠিত।
    • iris.data ফিচার এবং iris.target ক্লাস লেবেল।
  2. ডেটা ভাগ করা:
    • train_test_split ব্যবহার করে ডেটা ট্রেনিং (৭০%) এবং টেস্ট (৩০%) ডেটাতে ভাগ করা হয়েছে।
  3. Gaussian Naive Bayes মডেল তৈরি:
    • Gaussian Naive Bayes মডেল তৈরি করা হয়েছে, যেটি Gaussian Distribution ধারণা অনুযায়ী কন্টিনিউয়াস ডেটার জন্য উপযুক্ত।
  4. মডেল প্রশিক্ষণ:
    • fit() ফাংশন ব্যবহার করে ট্রেনিং ডেটা দিয়ে মডেলটি প্রশিক্ষিত করা হয়েছে।
  5. ফলাফল মূল্যায়ন:
    • accuracy_score এবং confusion_matrix ব্যবহার করে মডেলটি কীভাবে কাজ করেছে তা মূল্যায়ন করা হয়েছে।
    • কনফিউশন ম্যাট্রিক্সের মাধ্যমে সঠিক এবং ভুল শ্রেণীভাগ দেখা যাবে।

আউটপুট:

  1. Accuracy: মডেলটি কতটা সঠিকভাবে পূর্বানুমান করেছে তা শতাংশ হিসেবে দেখাবে।
  2. Confusion Matrix: কনফিউশন ম্যাট্রিক্সটি শ্রেণীভাগের সঠিকতা এবং ভুল পারফরম্যান্স প্রদর্শন করবে।

Naive Bayes এর উপকারিতা:

  • সহজ এবং দ্রুত: Naive Bayes একটি দ্রুত অ্যালগরিদম, যেটি কমপিউটেশনে সস্তা এবং দ্রুত কাজ করে।
  • এমনকি ছোট ডেটাসেটের জন্য ভালো কাজ করে
  • মাল্টিনোমিয়াল ডিস্ট্রিবিউশন এবং গাউসিয়ান ডিস্ট্রিবিউশন অনুযায়ী আলাদা আলাদা প্রকারের Naive Bayes মডেল আছে।

সারাংশ:

  • Naive Bayes হল একটি শক্তিশালী এবং দ্রুত মেশিন লার্নিং অ্যালগরিদম, যা শ্রেণীবিভাগ সমস্যা সমাধানে ব্যবহৃত হয়।
  • Scikit-learn লাইব্রেরি ব্যবহার করে Naive Bayes মডেল তৈরি, প্রশিক্ষণ এবং মূল্যায়ন করা খুবই সহজ।
  • GaussianNB হল Naive Bayes এর একটি প্রকার যা কন্টিনিউয়াস ডেটার জন্য উপযুক্ত।
Content added By
Promotion

Are you sure to start over?

Loading...