📌 آموزش SVM – پارت ۳: بررسی انواع کرنل در SVM 🚀
حالا که با نحوهی پیادهسازی SVM با sklearn آشنا شدیم، وقتشه که یکی از مهمترین مفاهیم SVM یعنی کرنلها (Kernels) رو بررسی کنیم! 😍
🔹 کرنل در SVM چیست؟SVM در حالت پایهای خودش، یک مرز تصمیم خطی بین کلاسها ترسیم میکنه. اما چی میشه اگه دادهها خطی تفکیکپذیر نباشد 🤔
اینجاست که کرنلها وارد بازی میشن! 🎯
🔹 کرنل به SVM کمک میکنه که دادههای غیرخطی رو به فضایی با ابعاد بالاتر ببرد تا تفکیکپذیر بشن.
🔻 انواع کرنلها در SVM:
1️⃣ کرنل خطی (linear) – مناسب برای دادههایی که خطی تفکیکپذیر هستند.
2️⃣ کرنل چندجملهای (poly) – برای تشخیص روابط غیرخطی بین ویژگیها.
3️⃣ کرنل گاوسی RBF ) rbf) – پرکاربردترین کرنل که دادهها رو در فضای بالاتر نگاشت میکنه.
4️⃣ کرنل سیگموید (sigmoid)– مشابه تابع فعالساز در شبکههای عصبی.
🔹 پیادهسازی انواع کرنلها در sklearn
همون مجموعه دادهی Iris رو استفاده میکنیم، اما این بار چند مدل SVM با کرنلهای مختلف تست میکنیم!
🔹 نتیجهگیری
📌 انواع کرنلها رو تست کردیم و دیدیم که بسته به نوع داده، کرنلهای مختلف دقت متفاوتی دارند!
📌 معمولا کرنل rbf در اکثر موارد عملکرد بهتری داره، اما همیشه باید با آزمون و خطا، کرنل مناسب رو انتخاب کنیم.
📌 در پارت بعدی، یک پروژهی کاربردی رو با 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 #کرنل #ماشین_بردار_پشتیبان #یادگیری_ماشین #طبقهبندی #هوش_مصنوعی
Telegram
Python3
🎓 آموزش و پروژههای Python
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
📌 آموزش SVM – پارت ۴ (پایانی): پروژهی کامل طبقهبندی دادهها با SVM🚀
حالا که با مفاهیم و پیادهسازی SVM آشنا شدیم، وقتشه که یه پروژهی واقعی و کامل انجام بدیم تا یادگیریمون تثبیت بشه!😍
🔹 هدف پروژه: طبقهبندی دادهها با SVM
🎯 مسئله:
🔹 ما یک مجموعه داده شامل ویژگیهای مختلف از نمونههایی داریم و میخوایم یک مدل SVM بسازیم که نمونههای جدید رو پیشبینی کنه.
📌 مراحل انجام پروژه:
✅ بارگذاری مجموعه داده
✅ پیشپردازش دادهها
✅ ساخت مدل SVM و آموزش آن
✅ ارزیابی مدل
✅ تست روی دادهی جدید
🔹 ۱. وارد کردن کتابخانههای موردنیاز
🔹 ۲. بارگذاری و آمادهسازی دادهها
برای این پروژه از مجموعه دادهی Wine Dataset استفاده میکنیم که شامل اطلاعاتی دربارهی سه نوع مختلف از شراب هست! 🍷
✅ دادهها رو آماده کردیم، بریم سراغ مرحلهی بعدی! 🚀
🔹 ۳. ساخت مدل SVM و آموزش آن
حالا مدل SVM با کرنل RBF رو میسازیم و روی دادههای آموزش، فیت (Fit) میکنیم:
✅ مدل ما الان ساخته شد و آموزش دید! 😍 حالا باید عملکردش رو تست کنیم.
🔹 ۴. پیشبینی و ارزیابی مدل
حالا با دادههای تستی، پیشبینی انجام میدیم و دقت مدل رو بررسی میکنیم:
✅ اگر دقت بالای ۹۰٪ بود، یعنی مدل خیلی خوب عمل کرده! 🎯
🔹 ۵. تست مدل روی دادهی جدید
حالا یه دادهی جدید به مدل میدیم تا ببینیم چطور پیشبینی میکنه:
✅ مدل ما بهدرستی نمونهی جدید رو دستهبندی کرد! 🎉
📌 نتیجهگیری
🎯 در این پروژه یاد گرفتیم که چطور با استفاده از 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 #ماشین_بردار_پشتیبان #یادگیری_ماشین #طبقهبندی #هوش_مصنوعی
Telegram
Python3
🎓 آموزش و پروژههای Python
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
👍7
📌 پیادهسازی دستی SVM – پارت ۱: مقدمه و درک مفهوم الگوریتم 🚀
حالا که SVM با sklearn رو یاد گرفتیم، وقتشه که این الگوریتم رو از صفر و بهصورت دستی پیادهسازی کنیم! 😍 در این آموزش، مرحلهبهمرحله جلو میریم تا کاملاً متوجه بشیم که SVM چطور کار میکنه و چطور از دادهها برای یافتن یک مرز تصمیم بهینه استفاده میکنه.
🔹 SVM چیست و چرا مهم اسست
ماشین بردار پشتیبان (SVM) یکی از قویترین الگوریتمهای طبقهبندی در یادگیری ماشین هست که میتونه یک ابرصفحهی جداکنندهی بهینه بین کلاسهای مختلف ایجاد کنه. 🎯
✅ هدف SVM:
📌 پیدا کردن بهترین مرز تصمی که کلاسها رو از هم جدا کنه.
📌 به حداکثر رساندن فاصله (Margin) بین کلاسهای مختلف.
📌 استفاده از بردارهای پشتیبان (Support Vectors) برای مشخص کردن مرز.
🔹 ایدهی اصلی SVM چگونه کار میکند؟
📌 فرض کنید دو کلاس داده داریم (🔴 و 🔵) و میخوایم اونها رو از هم جدا کنیم.
📌 مرزهای مختلفی برای جدا کردن این دو کلاس وجود داره، اما SVM بهترین مرز را پیدا میکنه که فاصلهی بیشتری از دادههای دو کلاس داشته باشه.
✅ این مرز، یک ابرصفحه (Hyperplane)هست که توسط SVM پیدا میشه! 😍
🔹 چرا پیادهسازی دستی SVM مهم است؟
✅ درک عمیق از نحوهی محاسبهی بردارهای پشتیبان و مرز تصمیم.
✅ فهمیدن دقیق چگونه SVM دادههای جدید را دستهبندی میکند.
✅ یادگیری نحوهی استفاده از هینهسازی ریاضی برای یافتن بهترین مرز تصمیم.
🔹 مراحل پیادهسازی دستی SVM
در پارتهای بعدی گامبهگام کدهای SVM رو از صفر پیادهسازی میکنیم:
🔹 پارت ۲: پیادهسازی تابع هزینه و گرادیان نزولی 🚀
🔹 پارت ۳: پیادهسازی تابع آموزش مدل (Training) 🎯
🔹 پارت ۴: پیادهسازی تابع پیشبینی (Prediction) 🔍
🔹 پارت ۵: تست مدل روی دادههای واقعی و ارزیابی آن ✅
📌 در پارت بعدی، وارد دنیای ریاضی SVM میشیم و توابع اصلی اون رو پیادهسازی میکنیم!😍
لینک
#SVM #پیادهسازی_دستی #یادگیری_ماشین #هوش_مصنوعی #طبقهبندی
حالا که SVM با sklearn رو یاد گرفتیم، وقتشه که این الگوریتم رو از صفر و بهصورت دستی پیادهسازی کنیم! 😍 در این آموزش، مرحلهبهمرحله جلو میریم تا کاملاً متوجه بشیم که SVM چطور کار میکنه و چطور از دادهها برای یافتن یک مرز تصمیم بهینه استفاده میکنه.
🔹 SVM چیست و چرا مهم اسست
ماشین بردار پشتیبان (SVM) یکی از قویترین الگوریتمهای طبقهبندی در یادگیری ماشین هست که میتونه یک ابرصفحهی جداکنندهی بهینه بین کلاسهای مختلف ایجاد کنه. 🎯
✅ هدف SVM:
📌 پیدا کردن بهترین مرز تصمی که کلاسها رو از هم جدا کنه.
📌 به حداکثر رساندن فاصله (Margin) بین کلاسهای مختلف.
📌 استفاده از بردارهای پشتیبان (Support Vectors) برای مشخص کردن مرز.
🔹 ایدهی اصلی SVM چگونه کار میکند؟
📌 فرض کنید دو کلاس داده داریم (🔴 و 🔵) و میخوایم اونها رو از هم جدا کنیم.
📌 مرزهای مختلفی برای جدا کردن این دو کلاس وجود داره، اما SVM بهترین مرز را پیدا میکنه که فاصلهی بیشتری از دادههای دو کلاس داشته باشه.
✅ این مرز، یک ابرصفحه (Hyperplane)هست که توسط SVM پیدا میشه! 😍
🔹 چرا پیادهسازی دستی SVM مهم است؟
✅ درک عمیق از نحوهی محاسبهی بردارهای پشتیبان و مرز تصمیم.
✅ فهمیدن دقیق چگونه SVM دادههای جدید را دستهبندی میکند.
✅ یادگیری نحوهی استفاده از هینهسازی ریاضی برای یافتن بهترین مرز تصمیم.
🔹 مراحل پیادهسازی دستی SVM
در پارتهای بعدی گامبهگام کدهای SVM رو از صفر پیادهسازی میکنیم:
🔹 پارت ۲: پیادهسازی تابع هزینه و گرادیان نزولی 🚀
🔹 پارت ۳: پیادهسازی تابع آموزش مدل (Training) 🎯
🔹 پارت ۴: پیادهسازی تابع پیشبینی (Prediction) 🔍
🔹 پارت ۵: تست مدل روی دادههای واقعی و ارزیابی آن ✅
📌 در پارت بعدی، وارد دنیای ریاضی SVM میشیم و توابع اصلی اون رو پیادهسازی میکنیم!😍
لینک
#SVM #پیادهسازی_دستی #یادگیری_ماشین #هوش_مصنوعی #طبقهبندی
Telegram
Python3
🎓 آموزش و پروژههای Python
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
📌 پیادهسازی دستی SVM – پارت ۲: تابع هزینه و گرادیان نزولی 🚀
حالا که با مفهوم SVM آشنا شدیم، توی این پارت میخوایم توابع اصلی برای محاسبه هزینه و بهروزرسانی وزنها با گرادیان نزولی رو پیادهسازی کنیم. 😍
🔹 تابع هزینه در SVM چطور کار میکند؟
✅ هدف SVM اینه که یک ابرصفحهی جداکننده بهینه پیدا کنه. برای این کار، باید یک تابع هزینه (Loss Function) تعریف کنیم که مقدارش هرچه کمتر باشه، مدل بهتر شده. 🎯
تابع هزینهی SVM دو بخش داره:
📌 ۱. جریمهی کلاسبندی نادرست: دادههایی که در سمت اشتباه مرز قرار بگیرند، جریمه میشن! 😢
📌 ۲. کاهش پیچیدگی مدل: مدل نباید بیش از حد پیچیده بشه تا روی دادههای جدید هم خوب کار کنه.
✅ تابع هزینهی Hinge Loss برای 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) طراحی شده، از یک دیتاست سادهی دو کلاسه استفاده میکنیم.
✅ دیتاست ما شامل دو گروه از نقاط در فضای دوبعدی هست که میخوایم اونها رو از هم جدا کنیم.
📌 برای شروع، بیایم دادهی مصنوعی بسازیم:
📌 در این کد:
✅ دو کلاس دادهی تصادفی تولید کردیم.
✅ دادهها رو برای آموزش و تست تقسیم کردیم.
✅ با
🔹 آموزش مدل روی دادههای واقعی
حالا مدل SVM که توی پارت قبلی نوشتیم رو روی این دادهها آموزش میدیم:
📌 در این کد:
✅ مدل SVM خودمون رو با دادههای آموزش، آموزش دادیم.
✅ روی دادههای تست پیشبینی کردیم.
✅ دقت مدل رو محاسبه و چاپ کردیم. 🎯
🔹 بررسی نتیجه
✅ حالا میتونیم ببینیم که مدل ما چقدر خوب دادههای جدید رو پیشبینی میکنه! 😍
✅ اگر دقت مدل کم بود، میتونیم تعداد تکرارها (n_iters) یا نرخ یادگیری (learning_rate) رو تنظیم کنیم.
لینک
📌 در پارت بعدی، تابع پیشبینی رو گسترش میدیم و مرز تصمیم 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 #پیادهسازی_دستی #یادگیری_ماشین #هوش_مصنوعی
Telegram
Python3
🎓 آموزش و پروژههای Python
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
📌 پیادهسازی دستی SVM – پارت ۴: رسم مرز تصمیم و ارزیابی مدل🚀
حالا که مدل رو آموزش دادیم و روی دادههای تست پیشبینی انجام دادیم، وقتشه که مدل رو بهصورت گرافیکی بررسی کنیم و ببینیم مرز تصمیم (Decision Boundary) چطور شکل گرفته! 😍
🔹 رسم مرز تصمیم SVM
📌 مرز تصمیم در SVM همون خطی هست که دو کلاس داده رو از هم جدا میکنه و براساس بردار وزنهای مدل (w) و بایاس (b) محاسبه میشه.
بیایم تابعی بنویسیم که این مرز رو رسم کنه:
🔹 توضیحات کد:
✅ دادههای ورودی رو روی نمودار پراکندگی رسم کردیم تا ببینیم چطور توزیع شدن.
✅ یک مشبک از نقاط ساختیمتا خروجی مدل رو در کل فضای ویژگی پیشبینی کنیم.
✅ مرز تصمیم رو با contourf رسم کردیم که دو کلاس داده رو از هم جدا میکنه.
🔹 بررسی عملکرد مدل
حالا که مرز تصمیم مدل رو دیدیم، میتونیم نتیجه بگیریم:
✅ اگر مرز تصمیم خیلی پیچیده باشه یعنی مدل بیش از حد دادهها رو یاد گرفته(Overfitting).
✅ گر مرز تصمیم نتونه کلاسها رو خوب جدا کنه: ویعنی مدل نیاز به آموزش بیشتر یا تنظیم بهتر پارامترها داره.
📌 در پارت آخر، یک پروژه واقعی و کاربردی با 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 #پیادهسازی_دستی #یادگیری_ماشین #هوش_مصنوعی
Telegram
Python3
🎓 آموزش و پروژههای Python
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
❤2
📌 پیادهسازی دستی SVM – پارت ۵: پروژه عملی تشخیص دستنوشته با SVM 🚀
حالا که مدل SVM رو از صفر پیادهسازی کردیم، بیایم یک پروژه واقعی و کاربردی اجرا کنیم! 😍 توی این پروژه، از دیتاست ارقام دستنویس (Digits Dataset) استفاده میکنیم تا مدل SVM، اعداد 0 تا 9 رو شناسایی کنه. 🎯
🔹 معرفی دیتاست دستنوشته (Digits Dataset)
📌 این دیتاست شامل 1797 تصویر 8×8 از اعداد 0 تا 9 هست.
📌 هر تصویر یک ماتریس 8×8 از مقدار پیکسلها است که مقدارش بین 0 تا 16 قرار داره.
📌 هر تصویر، برچسبی داره که عدد دستنوشته رو مشخص میکنه (بین 0 تا 9).
🔹 بارگذاری و نمایش دادهها
اول، دیتاست رو بارگذاری میکنیم و چند نمونه از تصاویر رو نمایش میدیم:
✅ ویژگیها (
✅ برچسبها (
✅ چند تا نمونه از تصاویر رو با
🔹 تقسیم دادهها و نرمالسازی
قبل از آموزش مدل،به مجموعهی آموزش و تست تقسیم تست تقسیم** میکنیم و نرمالسازی انجام میدیم:
✅ 70% دادهها رو برای آموزش و 30% رو برای تست در نظر ویژگیها رو نرمالسازی کردیممالسازی کردیم تا مدل بهتر کار 🔹 آموزش مدل SVM آموزش مدل SVM
حالا مدل SVM رو روی دادههای دستنویس اجرا میکنیم:
✅ از کرنل خطی (
🔹 تست مدل روی یک عدد دلخواه
بیایم یکی از تصاویر تست رو انتخاب کنیم و ببینیم مدل چه عددی پیشبینی میکنه! 😍
✅ یک تصویر از دادههای تست عدد دستنویس رو پیشبینی میکنه و نمایش میده
🔹 نتیجهگیریSVMمیتونه اعداد دستنویس رو با دقت بالا تشخیص بدهکرنلهای مختلف (linear, rbf, poly) میتونیم مدل رو بهینه نشان داد که 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 بود! در آموزش بعدی سراغ الگوریتم بعدی میریم. 😍
Telegram
Python3
🎓 آموزش و پروژههای Python
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
❤4
Forwarded from چنل پایتون | جنگو | برنامه نویسی وب سایت | HTML & CSS & JS (Py3)
آموزش نصب محیط کد نویسی بدون دردسر 😀:
https://aparat.com/v/bpwjlky
کانال مارو دنبال کنید❤️:
https://www.aparat.com/Amir_1234_ka
https://aparat.com/v/bpwjlky
کانال مارو دنبال کنید❤️:
https://www.aparat.com/Amir_1234_ka
🔥1🤔1
Forwarded from چنل پایتون | جنگو | برنامه نویسی وب سایت | HTML & CSS & JS (Py3)
آموزش ساخت پایگاه داده و دیتابیس در پایتون خیلی راحت😅:
https://aparat.com/v/xqmhfvz
کانال مارو هم دنبال کنید😀❤️:
https://www.aparat.com/Amir_1234_ka
https://aparat.com/v/xqmhfvz
کانال مارو هم دنبال کنید😀❤️:
https://www.aparat.com/Amir_1234_ka
❤1🤔1
Forwarded from چنل پایتون | جنگو | برنامه نویسی وب سایت | HTML & CSS & JS (Py3)
چطوری میشه قیمت لحظه ای دلار رو با پایتون گرفت؟
https://aparat.com/v/nkh1b2t
کانال رو دنبال کنید❤️:
https://www.aparat.com/Amir_1234_ka
https://aparat.com/v/nkh1b2t
کانال رو دنبال کنید❤️:
https://www.aparat.com/Amir_1234_ka
🥰1👏1
Forwarded from چنل پایتون | جنگو | برنامه نویسی وب سایت | HTML & CSS & JS (Py3)
چطوری با پایتون فایل های Json رو بخونیم؟😃:
https://aparat.com/v/hrzy207
کانال مارو دنبال کنید❤️:
https://www.aparat.com/Amir_1234_ka
https://aparat.com/v/hrzy207
کانال مارو دنبال کنید❤️:
https://www.aparat.com/Amir_1234_ka
👍2
Forwarded from چنل پایتون | جنگو | برنامه نویسی وب سایت | HTML & CSS & JS (Py3)
Forwarded from چنل پایتون | جنگو | برنامه نویسی وب سایت | HTML & CSS & JS (Py3)
Forwarded from چنل پایتون | جنگو | برنامه نویسی وب سایت | HTML & CSS & JS (Py3)