Python দিয়ে SVM মডেল তৈরি করা

Support Vector Machine (SVM) - পাইথন দিয়ে মেশিন লার্নিং (Machine Learning with Python) - Machine Learning

368

Support Vector Machine (SVM) একটি শক্তিশালী এবং জনপ্রিয় মেশিন লার্নিং অ্যালগরিদম যা ক্লাসিফিকেশন এবং রিগ্রেশন উভয়ের জন্য ব্যবহৃত হয়। এটি ডেটাকে ক্লাসিফাই করার জন্য একটি হাইপারপ্লেন তৈরি করে যা ডেটার বিভিন্ন শ্রেণী বা ক্লাসকে আলাদা করে। SVM অ্যালগরিদমটি সঠিক হাইপারপ্লেন খুঁজে বের করার জন্য মার্জিন (margin) সর্বাধিক করতে কাজ করে।

এই উদাহরণে, আমরা Scikit-learn লাইব্রেরি ব্যবহার করে একটি SVM Classifier তৈরি করব এবং Iris ডেটাসেটের উপর ক্লাসিফিকেশন করব।

প্রক্রিয়া:

  1. ডেটাসেট লোড করা
  2. ডেটাকে Training এবং Testing অংশে ভাগ করা
  3. SVM মডেল তৈরি এবং প্রশিক্ষণ
  4. মডেল পরীক্ষা এবং ফলাফল মূল্যায়ন করা

উদাহরণ: SVM মডেল তৈরি করা

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

প্রথমে Scikit-learn, NumPy, এবং Matplotlib লাইব্রেরি ইনস্টল করুন:

pip install scikit-learn numpy matplotlib

২. কোড উদাহরণ:

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

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

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

# SVM মডেল তৈরি করা (SVC - Support Vector Classifier)
model = SVC(kernel='linear')  # 'linear' কিপর্যন্ত লিনিয়ার হাইপারপ্লেন ব্যবহার করবে

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

# মডেলটি টেস্ট ডেটা দিয়ে প্রেডিকশন করা
y_pred = model.predict(X_test)

# ফলাফল মূল্যায়ন
print("Accuracy:", accuracy_score(y_test, y_pred))
print("Classification Report:\n", classification_report(y_test, y_pred))
print("Confusion Matrix:\n", confusion_matrix(y_test, y_pred))

# ফলাফল ভিজ্যুয়ালাইজেশন
plt.figure(figsize=(10, 6))

# প্রকৃত টার্গেট vs প্রেডিকশন গ্রাফ
plt.scatter(y_test, y_pred)
plt.xlabel('Actual Values')
plt.ylabel('Predicted Values')
plt.title('Actual vs Predicted Values')
plt.show()

৩. কোড বিশ্লেষণ:

  1. Iris ডেটাসেট: এটি একটি প্রাচীন ডেটাসেট যা তিনটি প্রকারের আইরিস ফুলের বৈশিষ্ট্য ধারণ করে। ডেটাসেটটিতে ৪টি বৈশিষ্ট্য (sepal length, sepal width, petal length, petal width) এবং ৩টি শ্রেণী (Setosa, Versicolor, Virginica) আছে।
  2. train_test_split: ডেটাকে ট্রেনিং (70%) এবং টেস্টিং (30%) সেটে ভাগ করা হয়।
  3. SVM মডেল তৈরি করা: SVC ক্লাসের মাধ্যমে SVM মডেল তৈরি করা হয়। এখানে kernel='linear' নির্দেশ করছে যে মডেলটি একটি লিনিয়ার হাইপারপ্লেন ব্যবহার করবে।
  4. model.fit: ট্রেনিং ডেটা দিয়ে মডেল প্রশিক্ষিত করা হয়।
  5. model.predict: টেস্ট ডেটার ওপর মডেল প্রেডিকশন করা হয়।
  6. accuracy_score, classification_report, এবং confusion_matrix: এগুলি মডেলের কার্যকারিতা মূল্যায়নের জন্য ব্যবহৃত হয়।

৪. আউটপুট:

  • Accuracy: মডেলটির সঠিকতা বা গড় প্রেডিকশন সঠিকতার হার।
  • Classification Report: Precision, Recall, F1-Score এর মত পরিমাপের বিস্তারিত প্রতিবেদন।
  • Confusion Matrix: এটি প্রকৃত ক্লাস এবং প্রেডিক্টেড ক্লাসের তুলনামূলক বিশ্লেষণ প্রদান করে।

৫. গ্রাফ:

  • Actual vs Predicted Values গ্রাফ: এই গ্রাফটি প্রকৃত আউটপুট এবং মডেল দ্বারা প্রেডিক্ট করা আউটপুটের তুলনা করবে।

SVM এর বিভিন্ন Kernel

SVM এর মধ্যে kernel প্যারামিটারটি গুরুত্বপূর্ণ। এটি SVM এর ক্ষমতা নির্ধারণ করে ডেটাকে ক্লাসিফাই করার জন্য বিভিন্ন ধরনের হাইপারপ্লেন তৈরি করতে। কিছু সাধারণ kernel টাইপ:

  1. Linear: সাধারণ লিনিয়ার হাইপারপ্লেন তৈরি করে।
  2. Polynomial: পলিনোমিয়াল হাইপারপ্লেন তৈরি করে, যা অকার্যকর ডেটাকে ভালোভাবে ক্লাসিফাই করতে সাহায্য করে।
  3. Radial Basis Function (RBF): এটি অ্যানালিটিক্যালি সবচেয়ে শক্তিশালী kernel এবং অ-লিনিয়ার ডেটা ক্লাসিফিকেশন জন্য ব্যবহৃত হয়।
  4. Sigmoid: সিগময়েড ফাংশনের মাধ্যমে একটি হাইপারপ্লেন তৈরি করে।

সারাংশ:

  • SVM হল একটি শক্তিশালী ক্লাসিফিকেশন অ্যালগরিদম, যা ডেটার শ্রেণীবিভাগ করতে সাহায্য করে।
  • Scikit-learn লাইব্রেরি ব্যবহার করে SVM মডেল সহজেই তৈরি করা যায়।
  • Linear SVM হাইপারপ্লেন ব্যবহার করে ইনপুট ডেটাকে ক্লাসিফাই করে।
  • মডেল প্রশিক্ষণ এবং পরীক্ষণের জন্য train_test_split, accuracy_score, classification_report ইত্যাদি টুলস ব্যবহার করা হয়।
Content added By
Promotion

Are you sure to start over?

Loading...