Python3
200 subscribers
100 photos
6 videos
26 files
518 links
🎓 آموزش و پروژه‌های Python
آموزش‌های کاربردی و پروژه‌های عملی Python برای همه سطوح. 🚀
Download Telegram
یا پیاده سازی کاملا دستی 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
https://aparat.com/v/vtblb08

آموزش فعال کردن Microsoft Store ر ویندوز!😀
https://aparat.com/v/oedg6kp

چطوری توی ویندوزمون Copilot رو دانلود و نصب کنیم و استفاده کنیم؟
https://aparat.com/v/qcybu6y

چطوری یک صفحه لاگین سایت رو هک کنیم؟؟😎
Python Programing 🐍:
کانال ماینکرافتمون رو فالو داشته باشید و گم نکنید و یادتون نره حتما حمایت کنید😍

https://www.aparat.com/Amir_1234_ka

قسمت اول ماینکرافتمون:
https://www.aparat.com/v/cra8adm?playlist=20008513
آموزش نصب محیط کد نویسی پایتون:
https://aparat.com/v/mroio69

امیدوارم لذت ببرید.❤️
حتما کانال مارو فالو داشته باشید:
https://www.aparat.com/Amir_1234_ka

مرسی که مارا دنبال میکنید.🌸
آموزش جنگو در 30 دقیقه ساده و کاربردی:
لینک ویدیو جنگو:
https://aparat.com/v/aow2664

با امیر آر ام توی 30 دقیقه طراح سایت شو😎
اگر از این ویدیو خوشتون اومد لایک و فالو کانال زیر یادتون نره❤️
https://www.aparat.com/Amir_1234_ka
قسمت اول آموزش برنامه نویسی flutter با پایتون🤓:
https://aparat.com/v/lqwy24p

ازتون خواهشمندم ویدیو هام رو لایک کنید و فالوم کنید تا ویدیو های بیشتری بزارم❤️:
https://www.aparat.com/Amir_1234_ka

#برنامه_نویسی_امیر_RM