Python3
200 subscribers
100 photos
6 videos
26 files
518 links
🎓 آموزش و پروژه‌های Python
آموزش‌های کاربردی و پروژه‌های عملی Python برای همه سطوح. 🚀
Download Telegram
آموزش بعدی الگوریتم ماشین های بردار پشتیبان یا همون svm باشه؟
🔥4
📌 آموزش SVM – پارت ۱: مقدمه، مفاهیم پایه و کاربردها 🚀

💡 ماشین بردار پشتیبان (SVM) یکی از قوی‌ترین الگوریتم‌های یادگیری ماشین برای طبقه‌بندی داده‌ها است که ابرصفحه‌ای (Hyperplane) ایجاد می‌کند تا داده‌ها را به بهترین شکل جدا کند! 😍



🔹 SVM چیست؟
SVM (Support Vector Machine) یک الگوریتم طبقه‌بندی است که هدف آن پیدا کردن بهترین مرز تصمیم‌گیری بین کلاس‌های مختلف داده‌ها است. این مرز به نام ابرصفحه جداکننده (Hyperplane) شناخته می‌شود.

اگر داده‌ها کاملاً جداشدنی باشند:
SVM یک خط مستقیم (برای داده‌های ۲بعدی) یا یک صفحه (برای داده‌های ۳بعدی) پیدا می‌کند که کلاس‌ها را از هم جدا می‌کند.

اگر داده‌ها هم‌پوشانی داشته باشند:
SVM بهترین خطی را پیدا می‌کند که بیشترین فاصله (Margin) را از کلاس‌ها داشته باشد!

اگر داده‌ها غیرخطی باشند:
SVM می‌تواند با استفاده از کرنل (Kernel Trick) داده‌ها را به فضای بالاتری ببرد تا بتوان آن‌ها را جدا کرد! 😎



🔹 مفاهیم کلیدی در SVM
🔸 ابرصفحه جداکننده (Hyperplane): مرزی که کلاس‌های داده را از هم جدا می‌کند.
🔸 حاشیه (Margin): فاصله بین ابرصفحه جداکننده و نزدیک‌ترین نقاط هر کلاس (که به آن‌ها بردارهای پشتیبان (Support Vectors) می‌گویند).
🔸 بردارهای پشتیبان (Support Vectors): داده‌هایی که در مرز تصمیم‌گیری قرار دارند و تعیین‌کننده بهترین خط جداسازی هستند!
🔸 کرنل (Kernel Trick): تکنیکی که داده‌های غیرخطی را به فضای بالاتر نقشه‌برداری (Mapping) می‌کند تا بتوان با یک خط ساده آن‌ها را جدا کرد.



🔹 انواع مدل‌های SVM
🔹 SVM خطی (Linear SVM) → وقتی داده‌ها به‌راحتی با یک خط یا صفحه جدا می‌شوند.
🔹 SVM غیرخطی (Non-Linear SVM) → وقتی داده‌ها با یک مرز منحنی بهتر جدا می‌شوند. در این حالت از کرنل‌ها استفاده می‌کنیم.
🔹 SVM با کرنل‌های مختلف:
- کرنل چندجمله‌ای (Polynomial Kernel)
- کرنل شعاعی (RBF Kernel - Radial Basis Function)
- کرنل سیگموئید (Sigmoid Kernel)



🔹 کاربردهای SVM در دنیای واقعی
تشخیص چهره (Face Recognition) 📸
دسته‌بندی متن و ایمیل‌ها (Spam Detection) 📩
تشخیص بیماری‌ها از روی داده‌های پزشکی 🏥
سیستم‌های تشخیص تقلب در تراکنش‌های بانکی 💳
شناسایی اشیاء در تصاویر و پردازش تصویر 🖼️



📌 نتیجه‌گیری
SVM یکی از دقیق‌ترین الگوریتم‌های طبقه‌بندی است! 🔥
بهترین گزینه برای داده‌های پیچیده‌ای است که به‌سختی قابل جداسازی هستند.
با استفاده از کرنل‌ها، حتی در مسائل غیرخطی هم عالی عمل می‌کند!



📌 در پارت بعدی، SVM را با استفاده از sklearn پیاده‌سازی می‌کنیم و نحوه‌ی استفاده از آن در دنیای واقعی را یاد می‌گیریم! 🎯

ادامه دارد... 🚀

#یادگیری_ماشین #SVM #طبقه‌بندی #هوش_مصنوعی #الگوریتم_یادگیریری**
2👍1
📌 آموزش SVM – پارت ۲: پیاده‌سازی با sklearn 🚀

حالا که با مفاهیم SVM (ماشین بردار پشتیبان) آشنا شدیم، وقتشه که این الگوریتم رو به‌صورت عملی پیاده‌سازی کنیم! 😍 توی این پارت با استفاده از کتابخانه sklearn یک مدل SVM می‌سازیم و داده‌ها رو طبقه‌بندی می‌کنیم.



🔹 نصب و وارد کردن کتابخانه‌های موردنیاز
قبل از شروع، مطمئن بشید که scikit-learn روی سیستم شما نصب هست. اگر نصب نیست، با این دستور نصبش کنید:

pip install scikit-learn numpy

حالا کتابخانه‌ها رو ایمپورت می‌کنیم:

import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score



🔹 آماده‌سازی داده‌ها
برای تمرین، از مجموعه داده‌ی معروف Iris Dataset استفاده می‌کنیم که شامل سه کلاس مختلف از گل زنبق (Setosa, Versicolor, Virginica) هست! 🌸

# بارگذاری مجموعه داده
iris = datasets.load_iris()

# دریافت ویژگی‌ها (X) و برچسب‌ها (y)
X = iris.data
y = iris.target

# تقسیم داده‌ها به مجموعه‌ی آموزش و تست (80% آموزش، 20% تست)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

حالا داده‌ها رو آماده کردیم و می‌تونیم مدل SVM رو روی این مجموعه اعمال کنیم! 😎



🔹 ساخت مدل SVM و آموزش آ
حالا یک مدل SVM با کرنل خطی (linear) ایجاد می‌کنیم و روی داده‌های آموزش فیت (fit) می‌کنیم:

# ایجاد مدل SVM
svm_model = SVC(kernel='linear')

# آموزش مدل روی داده‌های آموزشی
svm_model.fit(X_train, y_train)

مدل ما الان آماده است! وقتشه که پیش‌بینی روی داده‌های تستی انجام بدیم.



🔹 پیش‌بینی و ارزیابی مدل
حالا با مدل آموزش‌دیده‌شده، داده‌های تستی رو پیش‌بینی می‌کنیم و دقت مدل رو محاسبه می‌کنیم:

# پیش‌بینی برچسب‌های داده تست
y_pred = svm_model.predict(X_test)

# محاسبه دقت مدل
accuracy = accuracy_score(y_test, y_pred)
print(f"🔹 دقت مدل: {accuracy:.2f}")

📊 اگر دقت بالای ۹۰٪ بود، یعنی مدل عملکرد خیلی خوبی داشته! 🎯



📌 نتیجه‌گیری
در این پارت یاد گرفتیم چطور با استفاده از sklearn یک مدل SVM بسازیم.
نحوه‌ی آموزش و ارزیابی مدل رو بررسی کردیم.



📌 در پارت بعدی، میریم سراغ بررسی انواع کرنل‌ها در SVM و تأثیرشون روی مدل! 🚀

🛠️ ادامه دارد🎯

#SVM #ماشین_بردار_پشتیبان #یادگیری_ماشین #طبقه‌بندی #هوش_مصنوعی
📌 آموزش SVM – پارت ۳: بررسی انواع کرنل در SVM 🚀

حالا که با نحوه‌ی پیاده‌سازی SVM با sklearn آشنا شدیم، وقتشه که یکی از مهم‌ترین مفاهیم SVM یعنی کرنل‌ها (Kernels) رو بررسی کنیم! 😍



🔹 کرنل در SVM چیست؟SVM در حالت پایه‌ای خودش، یک مرز تصمیم خطی بین کلاس‌ها ترسیم می‌کنه. اما چی میشه اگه داده‌ها خطی تفکیک‌پذیر نباشد 🤔

اینجاست که کرنل‌ها وارد بازی میشن! 🎯
🔹 کرنل به SVM کمک می‌کنه که داده‌های غیرخطی رو به فضایی با ابعاد بالاتر ببرد تا تفکیک‌پذیر بشن.

🔻 انواع کرنل‌ها در SVM:
1️⃣ کرنل خطی (linear) – مناسب برای داده‌هایی که خطی تفکیک‌پذیر هستند.
2️⃣ کرنل چندجمله‌ای (poly) – برای تشخیص روابط غیرخطی بین ویژگی‌ها.
3️⃣ کرنل گاوسی RBF ) rbf) – پرکاربردترین کرنل که داده‌ها رو در فضای بالاتر نگاشت می‌کنه.
4️⃣ کرنل سیگموید (sigmoid)– مشابه تابع فعال‌ساز در شبکه‌های عصبی.



🔹 پیاده‌سازی انواع کرنل‌ها در sklearn
همون مجموعه داده‌ی Iris رو استفاده می‌کنیم، اما این بار چند مدل SVM با کرنل‌های مختلف تست می‌کنیم!

import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score

# بارگذاری داده‌ها
iris = datasets.load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# لیست کرنل‌ها
kernels = ['linear', 'poly', 'rbf', 'sigmoid']

# تست انواع کرنل‌ها
for kernel in kernels:
print(f"🔹 آزمایش کرنل: {kernel}")

# ساخت و آموزش مدل SVM با کرنل موردنظر
model = SVC(kernel=kernel)
model.fit(X_train, y_train)

# پیش‌بینی روی داده‌های تست
y_pred = model.predict(X_test)

# محاسبه دقت مدل
accuracy = accuracy_score(y_test, y_pred)
print(f" دقت مدل با کرنل {kernel}: {accuracy:.2f}")
print("-" * 40)



🔹 نتیجه‌گیری
📌 انواع کرنل‌ها رو تست کردیم و دیدیم که بسته به نوع داده، کرنل‌های مختلف دقت متفاوتی دارند!
📌 معمولا کرنل rbf در اکثر موارد عملکرد بهتری داره، اما همیشه باید با آزمون و خطا، کرنل مناسب رو انتخاب کنیم.



📌 در پارت بعدی، یک پروژه‌ی کاربردی رو با SVM پیاده‌سازی می‌کنیم تا یادگیری عمیق‌تر بشه!🚀

🛠️ ادامه دارد🎯

#SVM #کرنل #ماشین_بردار_پشتیبان #یادگیری_ماشین #طبقه‌بندی #هوش_مصنوعی
📌 آموزش SVM – پارت ۴ (پایانی): پروژه‌ی کامل طبقه‌بندی داده‌ها با SVM🚀

حالا که با مفاهیم و پیاده‌سازی SVM آشنا شدیم، وقتشه که یه پروژه‌ی واقعی و کامل انجام بدیم تا یادگیری‌مون تثبیت بشه!😍



🔹 هدف پروژه: طبقه‌بندی داده‌ها با SVM
🎯 مسئله:
🔹 ما یک مجموعه داده شامل ویژگی‌های مختلف از نمونه‌هایی داریم و می‌خوایم یک مدل SVM بسازیم که نمونه‌های جدید رو پیش‌بینی کنه.

📌 مراحل انجام پروژه:
بارگذاری مجموعه داده
پیش‌پردازش داده‌ها
ساخت مدل SVM و آموزش آن
ارزیابی مدل
تست روی داده‌ی جدید



🔹 ۱. وارد کردن کتابخانه‌های موردنیاز

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score, classification_report



🔹 ۲. بارگذاری و آماده‌سازی داده‌ها
برای این پروژه از مجموعه داده‌ی Wine Dataset استفاده می‌کنیم که شامل اطلاعاتی درباره‌ی سه نوع مختلف از شراب هست! 🍷

# بارگذاری مجموعه داده
wine = datasets.load_wine()

# دریافت ویژگی‌ها (X) و برچسب‌ها (y)
X = wine.data
y = wine.target

# تقسیم داده‌ها به مجموعه‌ی آموزش و تست (80% آموزش، 20% تست)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

داده‌ها رو آماده کردیم، بریم سراغ مرحله‌ی بعدی! 🚀



🔹 ۳. ساخت مدل SVM و آموزش آن
حالا مدل SVM با کرنل RBF رو می‌سازیم و روی داده‌های آموزش، فیت (Fit) می‌کنیم:

# ساخت مدل SVM با کرنل RBF
svm_model = SVC(kernel='rbf', C=1.0, gamma='scale')

# آموزش مدل
svm_model.fit(X_train, y_train)

مدل ما الان ساخته شد و آموزش دید! 😍 حالا باید عملکردش رو تست کنیم.



🔹 ۴. پیش‌بینی و ارزیابی مدل
حالا با داده‌های تستی، پیش‌بینی انجام می‌دیم و دقت مدل رو بررسی می‌کنیم:

# پیش‌بینی روی داده‌های تست
y_pred = svm_model.predict(X_test)

# محاسبه دقت مدل
accuracy = accuracy_score(y_test, y_pred)
print(f"🔹 دقت مدل: {accuracy:.2f}")

# نمایش گزارش طبقه‌بندی
print("📊 گزارش مدل:")
print(classification_report(y_test, y_pred))

اگر دقت بالای ۹۰٪ بود، یعنی مدل خیلی خوب عمل کرده! 🎯



🔹 ۵. تست مدل روی داده‌ی جدید
حالا یه داده‌ی جدید به مدل می‌دیم تا ببینیم چطور پیش‌بینی می‌کنه:

# انتخاب یک نمونه تصادفی از مجموعه تست
sample = X_test[5].reshape(1, -1)

# پیش‌بینی کلاس آن
predicted_class = svm_model.predict(sample)
print(f"🔹 کلاس پیش‌بینی‌شده: {predicted_class[0]}")

مدل ما به‌درستی نمونه‌ی جدید رو دسته‌بندی کرد! 🎉


📌 نتیجه‌گیری
🎯 در این پروژه یاد گرفتیم که چطور با استفاده از SVM یک مسئله‌ی واقعی طبقه‌بندی رو حل کنیم.
🎯 نحوه‌ی استفاده از کرنل‌های مختلف و ارزیابی مدل رو بررسی کردیم.
🎯 مدل رو روی یک نمونه‌ی جدید تست کردیم و عملکردش رو مشاهده کردیم.





ا

#SVM #ماشین_بردار_پشتیبان #یادگیری_ماشین #طبقه‌بندی #هوش_مصنوعی
👍7
هر دفه باید بیام بگم ریاکشن بزنید
👍4😁2👎1
Python3 pinned «🔹فورییی🔹 اگه میخوای برنامه نویس خفنی بشی و کلی ترفند و نکته یاد بگیری در زبان های: 1⃣ SQL 2⃣ C# 3⃣ Python و همچنین زبان های دیگه، در کانال آپارات ما عضو بشید و لایک کنید و کامنت بزارید 🙏🙂 https://www.aparat.com/Amir_1234_ka اگر سوال یا درخواستی هم دارید…»
الگوریتم بعدی چی باشع؟
نظرتون در باره ELM چیه؟
👎2👍1
یا پیاده سازی کاملا دستی svm?
👍8🤬1
📌 پیاده‌سازی دستی SVM – پارت ۱: مقدمه و درک مفهوم الگوریتم 🚀

حالا که SVM با sklearn رو یاد گرفتیم، وقتشه که این الگوریتم رو از صفر و به‌صورت دستی پیاده‌سازی کنیم! 😍 در این آموزش، مرحله‌به‌مرحله جلو میریم تا کاملاً متوجه بشیم که SVM چطور کار می‌کنه و چطور از داده‌ها برای یافتن یک مرز تصمیم بهینه استفاده می‌کنه.



🔹 SVM چیست و چرا مهم اسست

ماشین بردار پشتیبان (SVM) یکی از قوی‌ترین الگوریتم‌های طبقه‌بندی در یادگیری ماشین هست که می‌تونه یک ابرصفحه‌ی جداکننده‌ی بهینه بین کلاس‌های مختلف ایجاد کنه. 🎯

هدف SVM:
📌 پیدا کردن بهترین مرز تصمی که کلاس‌ها رو از هم جدا کنه.
📌 به حداکثر رساندن فاصله (Margin) بین کلاس‌های مختلف.
📌 استفاده از بردارهای پشتیبان (Support Vectors) برای مشخص کردن مرز.



🔹 ایده‌ی اصلی SVM چگونه کار می‌کند؟

📌 فرض کنید دو کلاس داده داریم (🔴 و 🔵) و می‌خوایم اون‌ها رو از هم جدا کنیم.
📌 مرزهای مختلفی برای جدا کردن این دو کلاس وجود داره، اما SVM بهترین مرز را پیدا می‌کنه که فاصله‌ی بیشتری از داده‌های دو کلاس داشته باشه.

این مرز، یک ابرصفحه (Hyperplane)هست که توسط SVM پیدا میشه! 😍



🔹 چرا پیاده‌سازی دستی SVM مهم است؟

درک عمیق از نحوه‌ی محاسبه‌ی بردارهای پشتیبان و مرز تصمیم.
فهمیدن دقیق چگونه SVM داده‌های جدید را دسته‌بندی می‌کند.
یادگیری نحوه‌ی استفاده از هینه‌سازی ریاضی برای یافتن بهترین مرز تصمیم.



🔹 مراحل پیاده‌سازی دستی SVM
در پارت‌های بعدی گام‌به‌گام کدهای SVM رو از صفر پیاده‌سازی می‌کنیم:

🔹 پارت ۲: پیاده‌سازی تابع هزینه و گرادیان نزولی 🚀
🔹 پارت ۳: پیاده‌سازی تابع آموزش مدل (Training) 🎯
🔹 پارت ۴: پیاده‌سازی تابع پیش‌بینی (Prediction) 🔍
🔹 پارت ۵: تست مدل روی داده‌های واقعی و ارزیابی آن



📌 در پارت بعدی، وارد دنیای ریاضی SVM می‌شیم و توابع اصلی اون رو پیاده‌سازی می‌کنیم!😍

لینک

#SVM #پیاده‌سازی_دستی #یادگیری_ماشین #هوش_مصنوعی #طبقه‌بندی
📌 پیاده‌سازی دستی SVM – پارت ۲: تابع هزینه و گرادیان نزولی 🚀

حالا که با مفهوم SVM آشنا شدیم، توی این پارت می‌خوایم توابع اصلی برای محاسبه هزینه و به‌روزرسانی وزن‌ها با گرادیان نزولی رو پیاده‌سازی کنیم. 😍



🔹 تابع هزینه در SVM چطور کار می‌کند؟

هدف SVM اینه که یک ابرصفحه‌ی جداکننده بهینه پیدا کنه. برای این کار، باید یک تابع هزینه (Loss Function) تعریف کنیم که مقدارش هرچه کمتر باشه، مدل بهتر شده. 🎯

تابع هزینه‌ی SVM دو بخش داره:
📌 ۱. جریمه‌ی کلاس‌بندی نادرست: داده‌هایی که در سمت اشتباه مرز قرار بگیرند، جریمه می‌شن! 😢
📌 ۲. کاهش پیچیدگی مدل: مدل نباید بیش از حد پیچیده بشه تا روی داده‌های جدید هم خوب کار کنه.

تابع هزینه‌ی Hinge Loss برای SVM به این شکل تعریف میشه:

فورمول پایین متن

🔹 پیاده‌سازی تابع هزینه و گرادیان نزولی

حالا بریم کد محاسبه هزینه و به‌روزرسانی وزن‌ها رو بنویسیم! 🚀

import numpy as np

class SVM:
def __init__(self, learning_rate=0.01, lambda_param=0.01, n_iters=1000):
self.lr = learning_rate # نرخ یادگیری
self.lambda_param = lambda_param # مقدار جریمه
self.n_iters = n_iters # تعداد تکرارها
self.w = None # وزن‌ها
self.b = None # بایاس

def fit(self, X, y):
n_samples, n_features = X.shape
self.w = np.zeros(n_features) # مقداردهی اولیه وزن‌ها
self.b = 0 # مقداردهی اولیه بایاس

# اجرای گرادیان نزولی برای بهینه‌سازی مدل
for _ in range(self.n_iters):
for idx, x_i in enumerate(X):
# بررسی شرط SVM
condition = y[idx] * (np.dot(x_i, self.w) + self.b) >= 1
if condition:
# اگر نمونه به‌درستی طبقه‌بندی شده، فقط وزن‌ها را کم می‌کنیم (لینیر مدل)
self.w -= self.lr * (2 * self.lambda_param * self.w)
else:
# اگر نمونه به‌درستی طبقه‌بندی نشده، وزن‌ها و بایاس را به‌روز کنیم
self.w -= self.lr * (2 * self.lambda_param * self.w - np.dot(x_i, y[idx]))
self.b -= self.lr * y[idx]

def predict(self, X):
return np.sign(np.dot(X, self.w) + self.b)



🔹 توضیح کد بالا

__init__ → مقداردهی اولیه نرخ یادگیری، تعداد تکرارها، وزن‌ها و بایاس
fit → یادگیری مدل با استفاده از گرادیان نزولی




📌 در پارت بعدی، مدل رو روی داده‌های واقعی اجرا می‌کنیم و بررسی می‌کنیم که چطور کار می‌کنه! 🚀

لینک

#SVM #پیاده‌سازی_دستی #یادگیری_ماشین #هوش_مصنوعی
📌 پیاده‌سازی دستی SVM – پارت ۳: آموزش مدل روی داده‌های واقعی 🚀

حالا که تابع هزینه و گرادیان نزولی رو پیاده‌سازی کردیم، وقتشه که مدل SVM خودمون رو روی یک دیتاست واقعی اجرا کنیم تا ببینیم چطور یاد می‌گیره و تصمیم‌گیری می‌کنه! 😍


🔹 دیتاست مناسب برای آموزش SVM

چون SVM در اصل برای طبقه‌بندی دودویی (Binary Classification) طراحی شده، از یک دیتاست ساده‌ی دو کلاسه استفاده می‌کنیم.
دیتاست ما شامل دو گروه از نقاط در فضای دو‌بعدی هست که می‌خوایم اون‌ها رو از هم جدا کنیم.

📌 برای شروع، بیایم داده‌ی مصنوعی بسازیم:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split

# تولید داده‌های دو بعدی برای دو کلاس
np.random.seed(1)
X1 = np.random.randn(50, 2) + np.array([2, 2]) # کلاس ۱
X2 = np.random.randn(50, 2) + np.array([-2, -2]) # کلاس ۲

X = np.vstack((X1, X2)) # ترکیب دو کلاس
y = np.hstack((np.ones(50), -np.ones(50))) # برچسب‌ها (۱ و -۱)

# تقسیم داده‌ها به آموزش و تست
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)

# نمایش داده‌ها
plt.scatter(X1[:, 0], X1[:, 1], color='b', label='کلاس ۱')
plt.scatter(X2[:, 0], X2[:, 1], color='r', label='کلاس ۲')
plt.legend()
plt.show()

📌 در این کد:
دو کلاس داده‌ی تصادفی تولید کردیم.
داده‌ها رو برای آموزش و تست تقسیم کردیم.
با matplotlib داده‌ها رو رسم کردیم تا ببینیم چطور پخش شدن.



🔹 آموزش مدل روی داده‌های واقعی

حالا مدل SVM که توی پارت قبلی نوشتیم رو روی این داده‌ها آموزش می‌دیم:

# ایجاد و آموزش مدل SVM
svm = SVM(learning_rate=0.01, lambda_param=0.01, n_iters=1000)
svm.fit(X_train, y_train)

# پیش‌بینی روی داده‌های تست
y_pred = svm.predict(X_test)

# محاسبه دقت مدل
accuracy = np.mean(y_pred == y_test)
print(f" دقت مدل: {accuracy * 100:.2f}%")

📌 در این کد:
مدل SVM خودمون رو با داده‌های آموزش، آموزش دادیم.
روی داده‌های تست پیش‌بینی کردیم.
دقت مدل رو محاسبه و چاپ کردیم. 🎯



🔹 بررسی نتیجه

حالا می‌تونیم ببینیم که مدل ما چقدر خوب داده‌های جدید رو پیش‌بینی می‌کنه! 😍
اگر دقت مدل کم بود، می‌تونیم تعداد تکرارها (n_iters) یا نرخ یادگیری (learning_rate) رو تنظیم کنیم.


لینک

📌 در پارت بعدی، تابع پیش‌بینی رو گسترش می‌دیم و مرز تصمیم SVM رو روی داده‌ها رسم می‌کنیم!🚀

#SVM #پیاده‌سازی_دستی #یادگیری_ماشین #هوش_مصنوعی
📌 پیاده‌سازی دستی SVM – پارت ۴: رسم مرز تصمیم و ارزیابی مدل🚀

حالا که مدل رو آموزش دادیم و روی داده‌های تست پیش‌بینی انجام دادیم، وقتشه که مدل رو به‌صورت گرافیکی بررسی کنیم و ببینیم مرز تصمیم (Decision Boundary) چطور شکل گرفته! 😍



🔹 رسم مرز تصمیم SVM

📌 مرز تصمیم در SVM همون خطی هست که دو کلاس داده رو از هم جدا می‌کنه و براساس بردار وزن‌های مدل (w) و بایاس (b) محاسبه می‌شه.

بیایم تابعی بنویسیم که این مرز رو رسم کنه:

def plot_decision_boundary(X, y, model):
fig, ax = plt.subplots()

# نمایش داده‌های ورودی
ax.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.bwr, alpha=0.7)

# تولید نقاط برای مرز تصمیم
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.linspace(x_min, x_max, 100), np.linspace(y_min, y_max, 100))

# پیش‌بینی مقدار کلاس برای هر نقطه در فضای ویژگی
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

# رسم مرز تصمیم
ax.contourf(xx, yy, Z, levels=[-1, 0, 1], alpha=0.2, colors=['red', 'blue'])

plt.title("SVM Decision Boundary")
plt.show()

# نمایش مرز تصمیم مدل SVM
plot_decision_boundary(X, y, svm)



🔹 توضیحات کد:

داده‌های ورودی رو روی نمودار پراکندگی رسم کردیم تا ببینیم چطور توزیع شدن.
یک مشبک از نقاط ساختیمتا خروجی مدل رو در کل فضای ویژگی پیش‌بینی کنیم.
مرز تصمیم رو با contourf رسم کردیم که دو کلاس داده رو از هم جدا می‌کنه.



🔹 بررسی عملکرد مدل

حالا که مرز تصمیم مدل رو دیدیم، می‌تونیم نتیجه بگیریم:

اگر مرز تصمیم خیلی پیچیده باشه یعنی مدل بیش از حد داده‌ها رو یاد گرفته(Overfitting).
گر مرز تصمیم نتونه کلاس‌ها رو خوب جدا کنه: ویعنی مدل نیاز به آموزش بیشتر یا تنظیم بهتر پارامترها داره.



📌 در پارت آخر، یک پروژه واقعی و کاربردی با SVM اجرا می‌کنیم تا این الگوریتم رو در دنیای واقعی ببینیم! 🚀

لین

#SVM #پیاده‌سازی_دستی #یادگیری_ماشین #هوش_مصنوعی
2
📌 پیاده‌سازی دستی SVM – پارت ۵: پروژه عملی تشخیص دست‌نوشته با SVM 🚀

حالا که مدل SVM رو از صفر پیاده‌سازی کردیم، بیایم یک پروژه واقعی و کاربردی اجرا کنیم! 😍 توی این پروژه، از دیتاست ارقام دست‌نویس (Digits Dataset) استفاده می‌کنیم تا مدل SVM، اعداد 0 تا 9 رو شناسایی کنه. 🎯



🔹 معرفی دیتاست دست‌نوشته (Digits Dataset)
📌 این دیتاست شامل 1797 تصویر 8×8 از اعداد 0 تا 9 هست.
📌 هر تصویر یک ماتریس 8×8 از مقدار پیکسل‌ها است که مقدارش بین 0 تا 16 قرار داره.
📌 هر تصویر، برچسبی داره که عدد دست‌نوشته رو مشخص می‌کنه (بین 0 تا 9).



🔹 بارگذاری و نمایش داده‌ها

اول، دیتاست رو بارگذاری می‌کنیم و چند نمونه از تصاویر رو نمایش می‌دیم:

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

# بارگذاری دیتاست
digits = datasets.load_digits()
X, y = digits.data, digits.target # ویژگی‌ها و برچسب‌ها

# نمایش چند نمونه از اعداد دست‌نویس
fig, axes = plt.subplots(2, 5, figsize=(10, 5))
for i, ax in enumerate(axes.flat):
ax.imshow(digits.images[i], cmap='gray')
ax.set_title(f'Label: {digits.target[i]}')
ax.axis('off')

plt.show()

ویژگی‌ها (X) شامل مقادیر پیکسل‌های تصاویر هستن.
برچسب‌ها (y) عدد دست‌نویس داخل هر تصویر رو مشخص می‌کنن.
چند تا نمونه از تصاویر رو با imshow رسم کردیم تا ببینیم داده‌ها چطور هستن.

🔹 تقسیم داده‌ها و نرمال‌سازی

قبل از آموزش مدل،به مجموعه‌ی آموزش و تست تقسیم تست تقسیم** می‌کنیم و نرمال‌سازی انجام می‌دیم:

# تقسیم داده‌ها به آموزش و تست
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)

# استانداردسازی داده‌ها
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

70% داده‌ها رو برای آموزش و 30% رو برای تست در نظر ویژگی‌ها رو نرمال‌سازی کردیممال‌سازی کردیم تا مدل بهتر کار 🔹 آموزش مدل SVM آموزش مدل SVM

حالا مدل SVM رو روی داده‌های دست‌نویس اجرا می‌کنیم:

from sklearn.svm import SVC
from sklearn.metrics import accuracy_score

# ایجاد و آموزش مدل SVM
svm = SVC(kernel='linear', C=1.0)
svm.fit(X_train, y_train)

# پیش‌بینی روی داده‌های تست
y_pred = svm.predict(X_test)

# محاسبه دقت مدل
accuracy = accuracy_score(y_test, y_pred)
print(f" دقت مدل: {accuracy * 100:.2f}%")

از کرنل خطی (kernel='linear') استفاد میشه بعد از نرمال‌سازی بهتر جدا می‌شندقت مدل روی داده‌های تست رو محاسبه کردیم

🔹 تست مدل روی یک عدد دلخواه

بیایم یکی از تصاویر تست رو انتخاب کنیم و ببینیم مدل چه عددی پیش‌بینی می‌کنه! 😍

index = 5  # عدد تست دلخواه
image = X_test[index].reshape(1, -1) # تبدیل تصویر به فرمت مناسب مدل

# پیش‌بینی مدل
predicted_label = svm.predict(image)[0]

# نمایش تصویر و عدد پیش‌بینی شده
plt.imshow(digits.images[index], cmap='gray')
plt.title(f'عدد پیش‌بینی شده: {predicted_label}')
plt.axis('off')
plt.show()

یک تصویر از داده‌های تست عدد دست‌نویس رو پیش‌بینی می‌کنه و نمایش می‌ده
🔹 نتیجه‌گیریSVMمی‌تونه اعداد دست‌نویس رو با دقت بالا تشخیص بدهکرنل‌های مختلف (linear, rbf, poly) می‌تونیم مدل رو بهینه نشان داد که SVM چطور در مسائل طبقه‌بندی چندکلاسه استفاده می‌شه! 🔥

این پا
یان سری آموزش SVM بود! در آموزش بعدی سراغ الگوریتم بعدی می‌ریم. 😍
4
آموزش نصب محیط کد نویسی بدون دردسر 😀:
https://aparat.com/v/bpwjlky

کانال مارو دنبال کنید❤️:
https://www.aparat.com/Amir_1234_ka
🔥1🤔1
آموزش ساخت پایگاه داده و دیتابیس در پایتون خیلی راحت😅:
https://aparat.com/v/xqmhfvz

کانال مارو هم دنبال کنید😀❤️:
https://www.aparat.com/Amir_1234_ka
1🤔1
چطوری میشه قیمت لحظه ای دلار رو با پایتون گرفت؟
https://aparat.com/v/nkh1b2t

کانال رو دنبال کنید❤️:
https://www.aparat.com/Amir_1234_ka
🥰1👏1
چطوری با پایتون فایل های Json رو بخونیم؟😃:
https://aparat.com/v/hrzy207

کانال مارو دنبال کنید❤️:
https://www.aparat.com/Amir_1234_ka
👍2