آموزش ویدیویی جاوا اسکریپت، Node.js ، React ، jQuery ، Vue و ...
1.61K subscribers
155 photos
71 videos
121 files
1.85K links
Download Telegram
🔵 نکته یادگیری ماشین

هایپرپارامترها (Hyperparameters) رو به صورت دستی انتخاب نکن، از جستجو استفاده کن.

🔹 هایپرپارامترها مثل:

تعداد درخت‌ها در RandomForest

نرخ یادگیری (learning rate) در شبکه‌های عصبی

مثل k در KNN

انتخاب درستشون می‌تونه تفاوت زیادی در دقت ایجاد کنه.

راهکارها:

Grid Search: امتحان کردن همه ترکیب‌ها (کند ولی دقیق)

Random Search: انتخاب تصادفی ترکیب‌ها (سریع‌تر و اغلب کافی)

Bayesian Optimization / Optuna: هوشمندانه‌تر و بهینه‌تر

به زبان ساده: به جای حدس زدن، بذار الگوریتم برات بهترین تنظیمات رو پیدا کنه.

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ


لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🔵 نکته یادگیری ماشین


بریم سراغ یه مشکل رایج که توی دنیای واقعی خیلی باهاش روبرو می‌شی: داده‌های گم‌شده! 🤔

مدیریت داده‌های گم‌شده (Handling Missing Data) 🕵️‍♀️

تصور کن یه عالمه داده جمع کردی، اما وقتی نگاهشون می‌کنی می‌بینی بعضی از سلول‌هاشون خالیه. مثل یه فرم ثبت‌نام که یه نفر اسمش رو نوشته اما آدرسش رو خالی گذاشته. 📝

داده‌های گم‌شده یه مشکل خیلی بزرگ در یادگیری ماشین هستن، چون اکثر الگوریتم‌ها نمی‌تونن با مقادیر خالی کار کنن و خطا می‌دن.

چطور این مشکل رو حل کنیم؟

مثل یک کارآگاه، باید برای پیدا کردن بهترین راه‌حل، استراتژی داشته باشی. دو روش اصلی وجود داره:

حذف کردن (Deletion):
ساده‌ترین راه اینه که سطرها یا ستون‌هایی که داده گم‌شده دارن رو حذف کنیم. 🗑 اما این کار یه خطر بزرگ داره: ممکنه اطلاعات مهمی رو از دست بدی، مخصوصاً اگه داده‌های گم‌شده زیاد باشن.

جایگزینی کردن (Imputation):
به جای حذف داده‌ها، اون‌ها رو با یه مقدار جایگزین پر می‌کنی. این کار به چند روش انجام می‌شه:

جایگزینی ساده: 🤓 می‌تونی از میانگین (Average)، میانه (Median) یا پرتکرارترین مقدار (Mode) اون ستون برای پر کردن جاهای خالی استفاده کنی.

جایگزینی هوشمند: 🧠 می‌تونی از یه مدل یادگیری ماشین دیگه استفاده کنی تا بر اساس بقیه داده‌ها، مقدار گم‌شده رو پیش‌بینی کنه.

چرا این کار مهمه؟

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

جلوگیری از خطا: بدون مدیریت داده‌های گم‌شده، مدل‌ت ممکنه اصلا اجرا نشه.

خلاصه که، داده‌های گم‌شده مثل پازل‌های ناقص هستن و قبل از هر کاری، باید با یه استراتژی درست، اون‌ها رو کامل کنیم تا مدل‌مون بتونه تصویر کامل رو ببینه! 😉

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ


لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir


🔵 نکته برنامه نویسی

یک تکنیک کمتر شنیده‌شده و کاربردی در برنامه‌نویسی، "Temporal Coupling Reduction" هست.

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

مثلاً:

conn.open()
conn.send_data(data)
conn.close()
اگر برنامه‌نویس جدیدی بیاد و وسط کار ترتیب رو به هم بزنه یا یک مرحله رو فراموش کنه، باگ پیش میاد.

راه‌حل تکنیک اینه که این توالی رو توی یک API یا abstraction بسته‌بندی کنی تا ترتیب درست رو اجباراً اجرا کنه و توسعه‌دهنده نتونه اشتباه کنه:

conn.send(data)
و داخلش خودش باز کردن و بستن اتصال رو مدیریت کنه.

این کار باعث میشه کد مقاوم‌تر و کمتر مستعد باگ‌های ناشی از ترتیب اجرا بشه.




ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🔵 نکته یادگیری ماشین

قبل از استفاده از الگوریتم‌های یادگیری ماشین، همیشه داده‌ها را نرمال‌سازی یا استاندارد کنید.
یعنی ویژگی‌ها (features) را طوری تغییر دهید که روی یک مقیاس مشابه باشند، مثلا بین 0 تا 1 یا با میانگین صفر و واریانس یک.

چرا؟ چون بسیاری از الگوریتم‌ها مثل KNN، SVM، و شبکه‌های عصبی نسبت به مقیاس ویژگی‌ها حساس هستند و اگر این کار را نکنید، مدل ممکن است روی ویژگی‌های با مقدار بزرگتر تمرکز کند و عملکردش بد شود.

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ


لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #React

🟣 موضوع : ‏تنظیم مسیر پیش‌فرض (404 و مسیرهای ناشناس)

نکته :

‏برای اینکه کاربر بتونه راحت تر تو سایتت بچرخه، یه مسیر پیش فرض بذار که اگه یهو وسط ناکجاآباد اینترنتی ول شد، سریع برگرده خونه! 🏡


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🔵 کوییز #مفاهیم_کلی_برنامه_نویسی

🟣 موضوع : ‏الگوریتم: مفهوم، اهمیت و مثال‌های کاربردی

🟢 سوال :

‏کدام یک از موارد زیر یک تکنیک برای طراحی الگوریتم است؟

گزینه ۱:
‏استفاده از توابع بازگشتی

گزینه ۲:
‏نادیده گرفتن بهینه‌سازی

گزینه ۳:
‏افزایش پیچیدگی کد

گزینه ۴:
‏حذف تمام نظرات (Comments)



🔵 گزینه صحیح: 1

🟢 توضیح :

‏استفاده از توابع بازگشتی یک تکنیک برای طراحی الگوریتم است که تابع خود را فراخوانی می‌کند.

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🔵 نکته یادگیری ماشین

حالا بریم سراغ یه مدل یادگیری ماشین که درست مثل خودمون، با پرسیدن سؤال‌های ساده تصمیم‌گیری می‌کنه! 🌳

درخت تصمیم (Decision Tree) 🤔

تصور کن می‌خوای تصمیم بگیری که امروز عصر چه کاری انجام بدی. ذهنت به صورت خودکار یک فرآیند منطقی رو طی می‌کنه:

آیا هوا آفتابیه؟ ☀️

بله: آیا وقت آزاد داری؟

بله: پس بریم بیرون قدم بزنیم!

خیر: پس تو خونه کتاب بخون.

خیر: آیا یه فیلم خوب توی تلویزیون پخش می‌شه؟

بله: پس فیلم ببین.

خیر: پس یه کتاب بخون.

یک درخت تصمیم (Decision Tree) دقیقاً همین‌طور کار می‌کنه. این مدل یک سری سؤال ساده رو در یک ساختار درختی می‌پرسه تا به یک نتیجه نهایی برسه.

اجزای یک درخت تصمیم:

ریشه (Root): اولین سؤالی که پرسیده می‌شه. (مثلاً: آیا هوا آفتابیه؟)

گره‌ها (Nodes): سؤال‌های میانی که مدل در طول مسیر می‌پرسه. (مثلاً: آیا وقت آزاد داری؟)

برگ‌ها (Leaves): پاسخ‌های نهایی یا پیش‌بینی‌های مدل. (مثلاً: برو قدم بزن، فیلم ببین).

چرا از درخت تصمیم استفاده می‌کنیم؟

ساده و قابل فهم: بر خلاف مدل‌های پیچیده‌ای مثل شبکه‌های عصبی، فرآیند تصمیم‌گیری یک درخت تصمیم کاملاً شفاف و قابل توضیحه. به همین دلیل به این مدل‌ها مدل جعبه سفید (White Box Model) می‌گن.

بدون نیاز به آماده‌سازی پیچیده: درخت‌های تصمیم به مقیاس داده‌ها یا وجود داده‌های پرت حساس نیستن و نیازی به مقیاس‌گذاری ویژگی‌ها ندارن.

البته این مدل‌ها ممکنه به بیش‌برازش (Overfitting) حساس باشن، اما با روش‌هایی مثل هرس کردن (Pruning) یا ترکیب اون‌ها (مثل جنگل تصادفی)، می‌شه این مشکل رو حل کرد.

خلاصه که، درخت تصمیم به جای اینکه از یک فرمول پیچیده استفاده کنه، از یک فرآیند ساده و منطقی برای رسیدن به جواب استفاده می‌کنه! 🍃

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ


لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir


🔵 نکته برنامه نویسی



📨 Dead Letter Queue
(صف نامه‌های مُرده)

DLQ یک صف ویژه هست که پیام‌هایی رو نگه می‌داره که سیستم نتونسته اون‌ها رو به‌درستی پردازش کنه.



📌 چرا مهمه؟

* توی سیستم‌های صف پیام (Message Queue) همیشه احتمال هست بعضی پیام‌ها مشکل داشته باشن (خراب، ناقص یا پردازش‌نشونده).
* اگه این پیام‌ها همین‌جوری توی صف بمونن، می‌تونن کل سیستم رو قفل کنن.
* DLQ مثل یک زباله‌دان هوشمند عمل می‌کنه: پیام خراب رو جدا می‌کنه تا بقیه سیستم درست کار کنن.



مثال ساده

فرض کن با RabbitMQ یا Kafka داری سفارش‌های خرید رو پردازش می‌کنی:

* پیام: { "order_id": 123, "amount": 50 } → اوکی
* پیام: { "order_id": null, "amount": -10 } → مشکل

اینجا پیام خراب به جای اینکه دوباره و دوباره تلاش بشه، به DLQ فرستاده میشه:

def process_message(msg):
try:
if not msg.get("order_id") or msg["amount"] <= 0:
raise ValueError("Invalid order")
print(" Order processed:", msg)
except Exception as e:
print(" Moved to DLQ:", msg)
dlq.append(msg)

dlq = []
process_message({"order_id": 123, "amount": 50})
process_message({"order_id": None, "amount": -10})


📖 جاهای کاربردی:

* پرداخت آنلاین → تراکنش خراب نباید سیستم رو متوقف کنه.
* IoT و داده‌های سنسور → داده ناقص به DLQ میره.
* سیستم‌های بزرگ Microservices → پیام‌های ناسازگار در صف اصلی نمی‌مونن.



🛠️ مزایا

* پایداری سیستم → پیام خراب جلوی پردازش پیام‌های سالم رو نمی‌گیره.
* امکان بررسی دستی → تیم توسعه یا پشتیبانی می‌تونه بعداً پیام‌ها رو تحلیل کنه.
* ردیابی خطا → کمک می‌کنه الگوهای خطا رو پیدا کنیم.



⚠️ چالش‌ها

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



👉 تشبیه ساده:
DLQ مثل بخش مرجوعی یک فروشگاهه 🛒
کالاهایی که مشکل دارن برن اونجا، تا هم مشتری‌های دیگه راحت خرید کنن، هم مسئول بررسی فرصت داشته باشه مشکل رو بررسی کنه.



ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🔵 نکته یادگیری ماشین

سوگیری و واریانس (به زبان تصویر) 🎯

تصور کن یه تیرانداز هستی و می‌خوای به هدف (داده‌های واقعی) بزنی.

سوگیری (Bias) یعنی تیرانداز چقدر از مرکز هدف دور می‌زنه.

واریانس (Variance) یعنی چقدر تیرهای تیرانداز به هم نزدیک و متمرکزن.

حالا چهار حالت مختلف رو ببین:

سوگیری کم، واریانس کم (هدف ایده‌آل):
این همون مدل رویایی ماست. 🤩 تیرانداز ما هر بار به مرکز هدف می‌زنه و تیرهاش هم خیلی به هم نزدیک و متمرکزن. این مدل هم دقیق و هم قابل اعتماده.

سوگیری بالا، واریانس کم (کم‌برازش یا Underfitting):
این مدل ساده‌لوح ماست. 🤷‍♂️ تیرانداز هر بار به یک نقطه مشخص می‌زنه، اما اون نقطه از مرکز هدف خیلی دوره. مدل ما همیشه در یک جهت اشتباه می‌کنه، ولی حداقل قابل پیش‌بینیه!

سوگیری کم، واریانس بالا (بیش‌برازش یا Overfitting):
این مدل وسواسی ماست. 🤯 تیرانداز هر بار به یه نقطه مختلف می‌زنه. تیرهاش دور تا دور مرکز هدف پخش شدن، اما میانگین همه‌شون تقریباً به مرکز هدفه. مدل ما سعی می‌کنه دقیق باشه، اما خیلی بی‌ثباته و به جزئیات بی‌ربط حساسه.

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

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

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ


لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir


🔵 نکات برنامه‌نویسی



## 🌀 Idempotency


(ایدمپوتنسی یا بی‌اثر بودن چندباره)** 🌀


به زبان ساده یعنی:
👉 اگر یک عملیات رو چند بار پشت سر هم انجام بدی، نتیجه همیشه یکی باشه.



📌 چرا مهمه؟

تصور کن یک کاربر روی دکمه پرداخت کلیک می‌کنه و اینترنتش قطع میشه. دوباره کلیک می‌کنه.

⬅️ اگر سیستم Idempotent باشه → فقط یک بار پول برداشت میشه.
⬅️ اگر نباشه → کاربر دوبار پول از دست میده 😬



مثال ساده (Python)

# درخواست برداشت پول
def withdraw(balance, amount, already_processed):
if already_processed: # اگر قبلاً انجام شده
return balance
return balance - amount

print(withdraw(100, 20, False)) # 80
print(withdraw(80, 20, True)) # 80 (هیچ تغییری نکرد)


📖 جاهای کاربردی

* پرداخت‌های آنلاین 💳 (Stripe, PayPal, بانک‌ها)
* APIهای REST (مثلاً PUT و DELETE معمولاً باید Idempotent باشن)
* سیستم‌های لاگ‌گذاری (اگر یک لاگ دوباره ارسال شد، تکراری ذخیره نشه)



🛠️ مزایا

⬅️ افزایش اعتماد کاربر (چند بار کلیک کنه هم امنه)
⬅️ جلوگیری از پردازش تکراری و هزینه اضافی
⬅️ راحتی در Retry (در صورت خطای شبکه)



⚠️ نکته مهم

Idempotency با عدم تغییر (Immutability) فرق داره.

* Immutability = داده هیچ‌وقت تغییر نمی‌کنه.
* Idempotency = ممکنه تغییر کنه، ولی چند بار پشت سر هم زدن نتیجه یکسان میده.



👉 تشبیه ساده

مثل کلید چراغ برق 💡

⬅️ هرچقدر دکمه "خاموش" رو بزنی → چراغ خاموش می‌مونه.
⬅️ هرچقدر دکمه "روشن" رو بزنی → چراغ روشن می‌مونه.



ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🔵 نکته یادگیری ماشین

از یادگیری تدریجی (Online / Incremental Learning) وقتی داده‌ها خیلی بزرگ یا در حال جریان (streaming) هستن استفاده کن.

🔹 در روش‌های کلاسیک، کل داده باید از قبل آماده باشه و مدل یک‌بار آموزش ببینه.
🔹 اما در دنیای واقعی داده‌ها ممکنه خیلی بزرگ باشن (Big Data) یا به صورت لحظه‌ای تولید بشن (مثل داده‌های سنسورها، تراکنش‌ها یا شبکه‌های اجتماعی).
🔹 الگوریتم‌های یادگیری تدریجی (مثل SGDClassifier در scikit-learn یا مدل‌های مبتنی بر Mini-Batch) می‌تونن داده رو به‌صورت بخش‌بخش پردازش کنن.

مزیت:

مدیریت داده‌های خیلی بزرگ بدون نیاز به RAM زیاد

امکان به‌روزرسانی مدل به‌صورت زنده بدون آموزش از صفر

به زبان ساده: این روش مثل اینه که به جای خوندن کل یک کتاب یک‌جا، فصل به فصل بخونی و یاد بگیری.

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ


لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🔵 نکته یادگیری ماشین

مقیاس‌گذاری ویژگی‌ها (Feature Scaling) 📏

تصور کن یه مدل برای پیش‌بینی قیمت خونه داری. دو تا ویژگی (ستون) داری:

مساحت خونه: از ۵۰ تا ۵۰۰ متر مربع.

تعداد اتاق‌ها: از ۱ تا ۵ اتاق.

همونطور که می‌بینی، عدد مربوط به مساحت خیلی بزرگ‌تر از عدد مربوط به تعداد اتاق‌ها است. 🤯 حالا یه مدل ساده مثل SVM (ماشین بردار پشتیبان) می‌خواد این دو تا رو با هم مقایسه کنه. به خاطر اختلاف بزرگ در مقیاس، مدل ممکنه به اشتباه فکر کنه که "مساحت" خیلی مهم‌تر از "تعداد اتاق‌ها" است.

مقیاس‌گذاری ویژگی‌ها دقیقاً برای حل همین مشکل طراحی شده. هدفش اینه که تمام ویژگی‌ها رو روی یک مقیاس مشابه قرار بده تا هیچ‌کدوم به خاطر عدد بزرگ‌ترشون، زورگو نباشن و مدل به همه به یک اندازه توجه کنه.

چطور کار می‌کنه؟

دو روش اصلی و پرکاربرد وجود داره:

استانداردسازی (Standardization):
این روش داده‌ها رو طوری تغییر می‌ده که میانگینشون صفر و انحراف معیار (Standard Deviation)شون یک بشه. این شبیه اینه که تمام داده‌ها رو به یک واحد استاندارد تبدیل کنی. 🧪

نرمال‌سازی (Normalization):
این روش داده‌ها رو در یک بازه مشخص، معمولاً بین ۰ و ۱، قرار می‌ده. مثل این می‌مونه که همه رو روی یه خط‌کش یکسان قرار بدی. 📏

چرا این کار مهمه؟

عملکرد بهتر: خیلی از الگوریتم‌ها، به خصوص اون‌هایی که با فاصله‌ها سروکار دارن (مثل KNN یا SVM) یا اون‌هایی که از نزول گرادیان (Gradient Descent) استفاده می‌کنن (مثل شبکه‌های عصبی)، با داده‌های مقیاس‌گذاری‌شده خیلی بهتر و سریع‌تر کار می‌کنن. ⚡️

عدالت: این کار تضمین می‌کنه که هیچ ویژگی، به خاطر اینکه اعداد بزرگ‌تری داره، بر مدل مسلط نمی‌شه.

خلاصه که، با مقیاس‌گذاری ویژگی‌ها، مطمئن می‌شی که همه ویژگی‌ها به اندازه خودشون مهم تلقی می‌شن و مدل به همه به طور عادلانه نگاه می‌کنه. 😉

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ


لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🔵 نکته یادگیری ماشین

بریم سراغ یه نکته کاربردی برای اینکه چطور با دوتا از بزرگ‌ترین مشکلات یادگیری ماشین، یعنی کم‌برازش و بیش‌برازش، مبارزه کنیم! 🥊

راه‌حل‌های کم‌برازش و بیش‌برازش 💊

کم‌برازش (Underfitting) وقتی اتفاق می‌افته که مدل‌ت زیادی ساده‌ است و نمی‌تونه از داده‌ها یاد بگیره. 📉 برعکس، بیش‌برازش (Overfitting) وقتی اتفاق می‌افته که مدل‌ت زیادی پیچیده است و نویز و جزئیات بی‌ربط رو حفظ می‌کنه. 📈

حالا ببینیم برای هر کدوم چه راه‌حل‌هایی داریم:

راه‌حل‌های کم‌برازش (Underfitting)

ویژگی‌های بیشتر اضافه کن: 💡 مدل‌ت رو با اطلاعات بیشتر تغذیه کن. شاید با مهندسی ویژگی بتونی ویژگی‌های جدید و معناداری بسازی.

از یک مدل پیچیده‌تر استفاده کن: اگر مدل‌ت خطیه، شاید یک مدل غیرخطی (مثل شبکه عصبی) برای داده‌هات مناسب‌تر باشه.

برای مدت طولانی‌تر آموزش بده: ⏱️ شاید مدل‌ت فقط به زمان بیشتری برای یادگیری الگوهای داده‌ها نیاز داره.

راه‌حل‌های بیش‌برازش (Overfitting)

داده‌های بیشتری جمع‌آوری کن: 📈 هرچه داده‌ها متنوع‌تر باشن، مدل بهتر می‌تونه به یک نتیجه کلی و قابل تعمیم برسه. اگر نمی‌تونی داده‌ی واقعی جمع کنی، از افزایش داده (Data Augmentation) استفاده کن.

مدل‌ت رو ساده‌تر کن: ✂️ اگر از یک مدل پیچیده استفاده می‌کنی، می‌تونی تعداد لایه‌ها یا پیچیدگیش رو کم کنی.

از رگولاریزیشن استفاده کن: 🔒 این تکنیک به مدل به خاطر پیچیده بودنش "جریمه" می‌ده و اون رو مجبور می‌کنه ساده‌تر بمونه.

از یادگیری گروهی (Ensemble Learning) استفاده کن: 🤝 ترکیب چندین مدل ساده، اغلب بهتر از یک مدل پیچیده عمل می‌کنه و پایداری بیشتری داره.

اعتبارسنجی متقابل (Cross-Validation) انجام بده: این تکنیک بهت کمک می‌کنه تا بیش‌برازش رو شناسایی کنی و جلوی اون رو بگیری.

خلاصه که، شناختن این دو مشکل و دونستن راه‌های حلشون، کلید ساختن مدل‌های هوشمنده! 🗝

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ


لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🔵 کوییز #مفاهیم_کلی_برنامه_نویسی

🟣 موضوع : ‏کاربرد الگوریتم‌های ساده در حل مسائل روزمره: مثال‌های عملی

🟢 سوال :

‏فرض کنید می‌خواهید لیستی از دانش‌آموزان را بر اساس نمرات امتحان از بالاترین به پایین‌ترین مرتب کنید. کدام روش شبیه به یک الگوریتم مرتب‌سازی است؟

گزینه ۱:
‏پرسیدن از هر دانش‌آموز نمره‌اش و نوشتن آن‌ها به هر ترتیبی که گفته می‌شود

گزینه ۲:
‏انتخاب تصادفی چند دانش‌آموز و مرتب کردن آن‌ها

گزینه ۳:
‏مقایسه نمره هر دانش‌آموز با دیگران و قرار دادن آن‌ها در لیست نهایی بر اساس نمره به صورت منظم

گزینه ۴:
‏نوشتن نمرات به ترتیب ورود دانش‌آموزان به کلاس



🔵 گزینه صحیح: 3

🟢 توضیح :

‏مقایسه و مرتب‌سازی نمرات به صورت منظم یک الگوریتم مرتب‌سازی است که خروجی آن یک لیست مرتب شده بر اساس نمرات خواهد بود.

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir


🔵 نکته برنامه نویسی



Retry with Exponential Backoff



🎯 تعریف

وقتی برنامه شما به یک سرویس خارجی (مثلاً API پرداخت یا دیتابیس ابری) درخواست می‌فرسته، ممکنه به‌طور موقت خطا بده (به‌خاطر قطعی شبکه یا شلوغی سرور).

راه‌حل: Retry (تلاش دوباره).
ولی اگه بدون برنامه پشت سر هم Retry کنی:

⬅️ هم سرویس خراب رو بیشتر تحت فشار می‌ذاری
⬅️ هم ممکنه خودت قفل کنی

اینجاست که Exponential Backoff میاد:

⬅️ بار اول بعد از ۱ ثانیه دوباره امتحان می‌کنی
⬅️ بار دوم بعد از ۲ ثانیه
⬅️ بار سوم بعد از ۴ ثانیه
⬅️ … (هر بار فاصله دو برابر میشه)



چرا خوبه؟

⬅️ به سرویس فرصت می‌دی خودش رو ریکاوری کنه.
⬅️ فشار کمتری به سیستم وارد میشه.
⬅️ احتمال موفقیت بیشتر میشه.



🐍 مثال ساده در Python

import time
import random

def unstable_service():
"""شبیه‌سازی یک سرویس که 50% مواقع خطا میده"""
if random.random() < 0.5:
raise Exception("Service failed ")
return "Success "

def call_with_retry(max_retries=5):
delay = 1 # شروع از 1 ثانیه
for attempt in range(1, max_retries + 1):
try:
result = unstable_service()
print(f"Attempt {attempt}: {result}")
return result
except Exception as e:
print(f"Attempt {attempt}: {e}, retrying in {delay}s...")
time.sleep(delay)
delay *= 2 # افزایش نمایی
print("All retries failed 🚨")
return None

call_with_retry()


💡 مزایا:

⬅️ جلوگیری از overload شدن سرویس خراب.
⬅️ افزایش شانس موفقیت در شرایط موقتاً بد.
⬅️ خیلی پرکاربرد در microservices، شبکه و APIهای حساس.



ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🔵 کوییز #مفاهیم_کلی_برنامه_نویسی

🟣 موضوع : ‏آشنایی با اصول برنامه‌نویسی تابعی: مفاهیم پایه و کاربردها

🟢 سوال :

‏کدام یک از الگوهای برنامه‌نویسی زیر معمولاً در برنامه‌نویسی تابعی برای پردازش مجموعه‌ای از داده‌ها استفاده می‌شود؟

گزینه ۱:
‏حلقه `for` با تغییر حالت متغیرها

گزینه ۲:
‏استفاده از توابع مرتبه بالاتر مانند `map`, `filter`, و `reduce`

گزینه ۳:
‏استفاده از دستور `goto` برای پرش بین بخش‌های مختلف کد

گزینه ۴:
‏ایجاد کلاس‌ها و اشیاء برای نگهداری حالت



🔵 گزینه صحیح: 2

🟢 توضیح :

‏توابع `map`, `filter`, و `reduce` الگوهای رایج در برنامه‌نویسی تابعی برای اعمال یک عمل بر روی تمام عناصر یک مجموعه، انتخاب زیرمجموعه‌ای از عناصر، و ترکیب عناصر به یک مقدار واحد هستند.

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir


🔵 نکته برنامه نویسی




🌳 Strangler Fig Pattern
(الگوی درخت خفه‌کننده)


یک تکنیک معماری نرم‌افزار برای بازنویسی یا مهاجرت سیستم‌های قدیمی (Legacy Systems) به سیستم‌های جدید بدون ایجاد اختلال.



📌 ایده اصلی

* مثل یک درخت انجیر خفه‌کننده (Strangler Fig) که دور یک درخت قدیمی رشد می‌کنه و کم‌کم جای اون رو می‌گیره.
* به‌جای اینکه یک سیستم قدیمی رو یک‌باره کنار بذاری (که ریسکش خیلی بالاست)، بخش‌بخش اون رو با سرویس‌های جدید جایگزین می‌کنی.
* در نهایت، کل سیستم قدیمی از بین میره و سیستم جدید کامل سرجاش میاد.



روند کار

1. سیستم قدیمی هنوز در حال اجراست.
2. یک Facade / Proxy جلوی سیستم قرار می‌دی که درخواست‌های کاربر رو مدیریت کنه.
3. هر وقت یک قابلیت جدید ساختی، به‌جای سیستم قدیمی، به سرویس جدید روت میشه.
4. به مرور، ترافیک سیستم قدیمی کمتر و کمتر میشه، تا جایی که میشه حذفش کرد.



مثال ساده (مفهومی)

User ---> [ Proxy ] ---> [ Old System ]
بعد از جایگزینی بخشی:

User ---> [ Proxy ]
↳ [ New Service: Payments ]
↳ [ Old System: Orders ]
و در نهایت:

User ---> [ Proxy ]
↳ [ New Service: Payments ]
↳ [ New Service: Orders ]


📖 جاهای کاربردی

* مهاجرت از Monolith به Microservices.
* بازنویسی نرم‌افزارهای قدیمی بانک‌ها، بیمه‌ها یا سیستم‌های ERP.
* سیستم‌های حیاتی که نمی‌تونن حتی یک روز Down بشن.



🛠️ مزایا

* کاهش ریسک → مهاجرت تدریجی، نه یک‌باره.
* انعطاف‌پذیری → میشه تست و اصلاح کرد بدون آسیب به کل سیستم.
* تداوم سرویس‌دهی → کاربران هیچ قطعی حس نمی‌کنن.



⚠️ معایب / چالش‌ها

* مدیریت Proxy و Routing پیچیده میشه.
* نیاز به هماهنگی دیتابیس بین بخش‌های قدیم و جدید.
* ممکنه فرآیند مهاجرت خیلی طولانی بشه.



👉 تشبیه ساده

این الگو شبیه بازسازی یک خانه در حالی که داخلش زندگی می‌کنی 🏡
به‌جای اینکه یک‌باره خرابش کنی، کم‌کم اتاق‌ها رو نوسازی می‌کنی، تا وقتی کل خونه جدید و مدرن بشه.



ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🔵 نکته یادگیری ماشین

یک نکته رندوم دیگه در یادگیری ماشین:

همیشه داده‌ها را به دو یا سه مجموعه تقسیم کنید: آموزش (Training)، اعتبارسنجی (Validation) و تست (Test).

* آموزش یا Training: برای یادگیری مدل استفاده می‌شود.
* اعتبارسنجی یا Validation: برای تنظیم هایپرپارامترها و جلوگیری از overfitting استفاده می‌شود.
* تست یا Test: برای ارزیابی نهایی عملکرد مدل روی داده‌های دیده‌نشده استفاده می‌شود.

چرا مهمه؟ چون اگر فقط روی داده‌های آموزش دقت بسنجید، مدل ممکنه خیلی خوب به داده‌های آموزشی بخوره ولی روی داده‌های واقعی عملکرد ضعیفی داشته باشه (overfitting).




ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ


لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
💡 نکته #جاوا_اسکریپت

🟣 موضوع : ‏کار با APIها و درخواست‌های شبکه - اعتبار سنجی داده‌های JSON با استفاده از کتابخانه‌ها و ابزارها

نکته :

‏برای شروع کار با APIها، اول با fetch یا axios یه درخواست ساده بفرست. مثلاً یه لیست محصولات بگیر! 🛒 خیلی هیجان‌انگیزه!


ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir
🔵 نکته یادگیری ماشین

تا الان شاید در مورد مدل‌هایی فکر کردین که بهشون جواب درست رو نشون می‌دادیم. 🤓 (مثلاً می‌گفتیم "این عکسه گربه‌ست.") حالا بریم سراغ یه مدل دیگه که خودش باید جواب رو کشف کنه! 🕵️‍♀️

یادگیری بدون نظارت (Unsupervised Learning) 🧩

در دنیای یادگیری ماشین، دو نوع اصلی یادگیری داریم:

یادگیری نظارت‌شده (Supervised Learning): مثل یه دانش‌آموز که معلم (داده‌های برچسب‌دار) بهش می‌گه "این سیب قرمزه، اون موز زرده". 🍎🍌

یادگیری بدون نظارت (Unsupervised Learning): مثل یه دانش‌آموز که بدون معلم، فقط یه عالمه میوه جلوی روشه و باید خودش کشف کنه که چه میوه‌هایی شبیه هم هستن و دسته‌بندیشون کنه. 🍇🍊

خوشه‌بندی (Clustering) محبوب‌ترین نوع یادگیری بدون نظارت هست.

تصور کن یه عالمه جوراب کثیف داری که قاطی شدن و می‌خوای اون‌ها رو جفت کنی و دسته دسته کنی. 🧦 هیچ‌کس بهت نگفته "اینا جفت هستن"، اما تو بر اساس رنگ، بافت و شکل، خودت این کار رو انجام می‌دی.

خوشه‌بندی هم دقیقاً همین کار رو انجام می‌ده. الگوریتم‌ها داده‌ها رو بررسی می‌کنن و اون‌هایی که شبیه‌تر هستن رو در یک "خوشه" یا گروه قرار می‌دن، بدون اینکه از قبل بدونن اون گروه‌ها چی هستن.

کجا کاربرد داره؟

بخش‌بندی مشتریان: 🛍 شرکت‌ها می‌تونن مشتری‌هاشون رو بر اساس عادت‌های خریدشون به گروه‌های مختلف تقسیم کنن تا کمپین‌های تبلیغاتی بهتری بسازن.

تشخیص ناهنجاری: 🚨 در یک سری داده مالی، خوشه‌بندی می‌تونه تراکنش‌هایی رو که با هیچ گروهی جور درنمی‌آن (که ممکنه تقلبی باشن) شناسایی کنه.

دسته‌بندی خودکار اسناد: 📂 می‌تونه اسناد رو بر اساس محتواشون به صورت خودکار به گروه‌های مختلف تقسیم کنه.

خلاصه که، یادگیری بدون نظارت به مدل‌ها اجازه می‌ده خودشون دنیای اطرافشون رو کشف کنن و الگوهای پنهان رو پیدا کنن، بدون اینکه کسی بهشون بگه دنبال چی باشن. 🤩

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ


لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir


🔵 نکات برنامه‌نویسی



CQRS Pattern

🔹 ایده اصلی

در معماری‌های سنتی، برای هر Entity معمولاً یک مدل داریم که هم برای نوشتن (ثبت، ویرایش، حذف) و هم برای خواندن (گزارش، جستجو) استفاده می‌شه.

اما در CQRS:

➡️ Command (دستور → نوشتن)
➡️ Query (پرس‌وجو → خواندن)

کاملاً از هم جدا می‌شن.



چرا؟

⬅️ نوشتن و خواندن نیازهای متفاوتی دارن.
⬅️ مثلاً برای نوشتن سفارش فقط باید دیتای اصلی ذخیره بشه، ولی برای خواندن سفارش ممکنه به گزارش‌های سنگین و چند جدول نیاز باشه.



مثال ساده (Python – بدون دیتابیس واقعی)

# مدل نوشتن (Command Model)
class OrderCommandModel:
def __init__(self):
self.orders = {}

def create_order(self, order_id, customer, amount):
self.orders[order_id] = {"customer": customer, "amount": amount}
print(f" سفارش ثبت شد: {order_id}")


# مدل خواندن (Query Model)
class OrderQueryModel:
def __init__(self, command_model):
self.command_model = command_model

def get_order(self, order_id):
return self.command_model.orders.get(order_id, None)


# تست
command_model = OrderCommandModel()
query_model = OrderQueryModel(command_model)

command_model.create_order("ORD101", "Ali", 250000)
print("🔍 جستجو:", query_model.get_order("ORD101"))


📖 کاربردهای واقعی

⬅️ سیستم‌های بزرگ مقیاس (Enterprise Systems)

⬅️ نوشتن داده توی دیتابیس Transactional (مثلاً SQL)
⬅️ خواندن داده از دیتابیس بهینه برای Query (مثلاً ElasticSearch)
⬅️ گزارش‌گیری سنگین: بدون اینکه کاربر عادی کند بشه
➡️ Event Sourcing: ترکیب می‌شه تا تغییرات فقط به‌عنوان Event ذخیره بشن



🛠️ مزایا

⬅️ بهینه‌سازی جداگانه برای خواندن و نوشتن
⬅️ مقیاس‌پذیری بهتر (می‌تونی هرکدوم رو روی سرور جدا بذاری)
⬅️ طراحی تمیزتر و قابل‌فهم‌تر



🎯 تشبیه ساده

مثل رستوران:

⬅️ ثبت سفارش (نوشتن): فقط اسم غذا و تعداد ثبت می‌شه.
⬅️ نمایش سفارش‌ها (خواندن): شاید نیاز باشه جدول زمانی، وضعیت، قیمت کل و… نمایش داده بشه.

هر کدوم نیازهای متفاوت دارن، پس جدا کردنشون منطقیه.



ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لطفا ما رو به دیگران هم معرفی کنید...

آدرس کانال اصلی :
https://t.me/Tu_24

آدرس وبسایت:
https://Tutorial24.ir