آموزش C# و .Net
1.55K subscribers
450 photos
329 videos
19 files
2.85K links
تعرفه تبلیغات :
https://t.me/+w-o6dHW5O31jMWNk

آیدی ادمین:
@ma_limbs
Download Telegram
🔵 نکته یادگیری ماشین

مراقب Underfitting باش!

تعریف Underfitting یعنی مدل آن‌قدر ساده باشه که حتی روی داده‌های آموزشی هم نتونه الگو رو درست یاد بگیره.

🔹 نشونه‌ها:

دقت پایین هم روی داده آموزش و هم روی داده تست.

مدل خیلی ساده است (مثلاً یک خط مستقیم برای داده‌ای که به وضوح غیرخطی است).

🔹 راهکارها:

استفاده از مدل پیچیده‌تر (مثلاً درخت عمیق‌تر، شبکه‌ی عصبی با لایه‌های بیشتر).

اضافه کردن ویژگی‌های جدید (Feature Engineering).

افزایش مدت زمان آموزش یا کاهش regularization شدید.

به زبان ساده: Underfitting یعنی مدل به اندازه کافی “باهوش” نیست.

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


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

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

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


یه نگاه کلی به نقشه راه یک پروژه یادگیری ماشین بندازیم! 🗺

چرخه حیات یک پروژه یادگیری ماشین 🔄

یادگیری ماشین فقط کدنویسی نیست، بلکه یک فرآیند مرحله به مرحله است. مثل ساختن یه خونه می‌مونه؛ نمی‌تونی اول سقف رو بذاری، بعد دیوارها رو بسازی! 🏠 هر مرحله به مرحله قبلی وابسته است.

این مراحل، نقشه راه یک پروژه یادگیری ماشین رو تشکیل می‌دن:

۱. تعریف مسئله 🧐

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

۲. جمع‌آوری و آماده‌سازی داده‌ها 🧹

مرحله داده: داده‌ها رو جمع‌آوری می‌کنی و بعد اون‌ها رو تمیز می‌کنی. اینجاست که با داده‌های گم‌شده و مقیاس‌گذاری ویژگی‌ها سروکله می‌زنی.

۳. مهندسی ویژگی‌ها

مرحله خلاقیت: در این مرحله، داده‌های خام رو به شکل‌هایی تبدیل می‌کنی که برای مدل قابل فهم‌تر باشن. این همون جاییه که می‌تونی با خلاقیت، عملکرد مدل رو کلی بهتر کنی.

۴. انتخاب مدل و آموزش 🤖

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

۵. ارزیابی مدل 💯

مرحله بازرسی: مدل‌ت رو با داده‌های آزمون بررسی می‌کنی. از معیارهای ارزیابی مناسب (مثل F1-Score) استفاده می‌کنی تا مطمئن بشی که مدل‌ت واقعاً خوب کار می‌کنه و صرفاً نویز رو حفظ نکرده.

۶. تنظیم و بهبود مدل 🛠

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

۷. استقرار مدل 🚀

مرحله نهایی: در آخر، مدل‌ت رو در یک محیط واقعی قرار می‌دی تا بتونه پیش‌بینی‌ها رو برای کاربران انجام بده.

خلاصه که، یادگیری ماشین فقط کدنویسی نیست، بلکه یک فرآیند مرحله به مرحله است که هر قدمش به قدم بعدی وابسته است. 🤓


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


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

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

آدرس وبسایت:
https://Tutorial24.ir
🔵 با عضویت در لیست تلگرامی جامع آموزش زبان زیر عضو بی نظیرترین‌ و کامل ترین مجموعه آموزش زبان انگلیسی تلگرامی شوید:

🟢 پادکست، کوییز، گرامر، آیلتس، تافل، ویدیو، آموزش زبان به کودکان، اصطلاحات انگلیسی، زبان کنکور و ... :

https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
🔵 نکته برنامه نویسی

در پایتون، اگر از عملگر is برای مقایسه اعداد کوچک (بین ‎-5‎ تا ‎256‎) استفاده کنید، معمولاً نتیجه درست به نظر میاد، چون این اعداد به صورت interned در حافظه نگهداری می‌شن. ولی برای اعداد بزرگ‌تر یا آبجکت‌های مشابه، ممکنه نتیجه غیرمنتظره باشه:

a = 256
b = 256
print(a is b) # True

x = 257
y = 257
print(x is y) # معمولاً False


📌 درس ماجرا: is برای بررسی یکسان بودن آدرس آبجکت‌ها هست، نه یکسان بودن مقدار. برای مقایسه مقدار از == استفاده کن.

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

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

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

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

مهندسی ویژگی (Feature Engineering)


یه مدل یادگیری ماشین، هر چقدر هم که خفن باشه، بدون داده‌های خوب نمی‌تونه کار خاصی انجام بده. مهندسی ویژگی دقیقاً همینجاست که وارد می‌شه. 🤔

تصور کن یه آشپزی. مواد خام مثل پیاز، گوجه و گوشت داری. 🧅🍅🍖 حالا فقط با همین‌ها نمی‌تونی یه غذای خوشمزه درست کنی. باید اون‌ها رو خورد کنی، تفت بدی، ادویه بزنی و با هم ترکیب کنی تا تبدیل به یه خورشت خوشمزه بشن.

مهندسی ویژگی هم دقیقاً همین کار رو با داده‌ها می‌کنه. ما داده‌های خام رو می‌گیریم و با دانش و خلاقیت خودمون، اون‌ها رو به "ویژگی"هایی تبدیل می‌کنیم که برای مدل قابل فهم‌تر و کاربردی‌تر باشن. 👨‍🍳

چند مثال ساده:

تاریخ تولد: به جای اینکه فقط تاریخ خام "1370/05/15" رو به مدل بدی، می‌تونی اون رو به یه ویژگی جدید مثل "سن" تبدیل کنی. 🎂

آدرس: به جای آدرس کامل "خیابان اصلی، کوچه فرعی، پلاک ۵"، می‌تونی ویژگی‌های مفیدتری مثل "فاصله از مرکز شهر" یا "نوع محله (مسکونی/تجاری)" بسازی. 🏘

قیمت و تعداد: در یه فروشگاه آنلاین، به جای اینکه فقط قیمت هر محصول و تعدادش رو به مدل بدی، می‌تونی یه ویژگی جدید به اسم "مجموع مبلغ فاکتور" (قیمت ضربدر تعداد) بسازی. 💰

خلاصه اینکه، مهندسی ویژگی یعنی "خلاقیت" در کار با داده‌ها. گاهی اوقات، یه مدل ساده با ویژگی‌های خوب، بهتر از یه مدل پیچیده با داده‌های خام عمل می‌کنه.

این نکته نشون می‌ده که بخش بزرگی از کار در یادگیری ماشین، بیشتر به هنر تبدیل داده به اطلاعات مفید مربوط می‌شه تا فقط انتخاب مدل. 😉


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


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

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

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

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

از Differencing و Seasonal Differencing برای ایستا کردن سری‌های زمانی استفاده می‌شن.

🔹 برای Differencing: تفاضل گرفتن بین مشاهدات متوالی برای حذف روند (Trend).

مثال:

$y'_t = y_t - y_{t-1}$

🔹 برای Seasonal Differencing: تفاضل گرفتن با فاصله فصلی برای حذف الگوهای تکراری.
مثال:
$y'_t = y_t - y_{t-s}$

(s = طول فصل، مثل 12 ماه برای داده‌های سالانه)

🔹 نکته: با Differencing داده‌ها ایستا می‌شن و مدل‌های کلاسیک مثل ARIMA بهتر عمل می‌کنن.

به زبان ساده: Differencing یعنی “تغییرات واقعی رو بررسی کن نه مقادیر خام داده‌ها” 🔄



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


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

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

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

الگوریتم های Hierarchical Clustering و K-Means دو رویکرد متفاوت برای خوشه‌بندی هستن.

🔹 K-Means:

خوشه‌ها رو از قبل مشخص می‌کنیم (k).

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

سریع و مناسب برای داده‌های بزرگ.

🔹 Hierarchical Clustering:

خوشه‌ها رو به صورت درختی می‌سازه (Dendrogram).

نیازی به تعیین تعداد خوشه‌ها از قبل نیست.

امکان دیدن رابطه سلسله‌مراتبی بین خوشه‌ها وجود داره.

معمولاً برای داده‌های کوچک یا متوسط مناسب‌تره.

به زبان ساده:

روش K-Means مثل “تقسیم مهمونی به k گروه از قبل تعیین شده” 🎉

روش Hierarchical مثل “چیدمان مهمونی در سطوح مختلف و دیدن اینکه کی با کی نزدیکه” 🌳

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


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

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

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

نکته: LSTM (Long Short-Term Memory) شبکه‌ای عصبی برای سری‌های زمانی غیرخطی و طولانیه.

🔹 ویژگی‌ها:

می‌تونه وابستگی بلندمدت بین مشاهدات رو یاد بگیره

مناسب برای داده‌های غیرخطی و پیچیده (مثل قیمت سهام یا متن)

از مشکل Vanishing Gradient در RNNهای ساده جلوگیری می‌کنه

🔹 مزایا:

پیش‌بینی دقیق‌تر سری‌های زمانی طولانی

توانایی یادگیری الگوهای پیچیده و دوره‌ای

کاربرد در Forecasting، NLP و تشخیص ناهنجاری

به زبان ساده: LSTM مثل یک “حافظه بلندمدت” برای مدل هست که اتفاقات گذشته‌ی مهم رو فراموش نمی‌کنه 🧠

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


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

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

آدرس وبسایت:
https://Tutorial24.ir
🔵 با عضویت در لیست تلگرامی جامع آموزش زبان زیر عضو بی نظیرترین‌ و کامل ترین مجموعه آموزش زبان انگلیسی تلگرامی شوید:

🟢 پادکست، کوییز، گرامر، آیلتس، تافل، ویدیو، آموزش زبان به کودکان، اصطلاحات انگلیسی، زبان کنکور و ... :

https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0


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

یک نکته مهم در مورد استفاده از Git حتی برای پروژه‌های شخصی اینه که:

> Git فقط برای همکاری تیمی نیست، بلکه یک "ماشین زمان" شخصی برای کد توست.

با Git می‌تونی:

⬅️ هر تغییری که در گذشته دادی رو دقیق ببینی.
⬅️ به نسخه‌های قبلی کدت برگردی، حتی اگر همه‌چیز رو خراب کرده باشی.
⬅️ بدون ترس از خراب شدن پروژه، ایده‌های جدید رو تو شاخه (branch) جدا تست کنی.

📌 مثال ساده:
فرض کن امروز یه تغییر میزنی که فکر می‌کنی عالیه، ولی فردا می‌بینی کدت پر از باگه.
با یک دستور ساده:

git checkout <commit-id>
می‌تونی برگردی به روزی که کدت بدون مشکل کار می‌کرد.


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

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

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

آدرس وبسایت:
https://Tutorial24.ir
🔵 کوییز #سی_شارپ

🟣 موضوع : ‏عملگرهای مقایسه‌ای در C#

🟢 سوال :

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

گزینه ۱:
>=

گزینه ۲:
<=

گزینه ۳:
>

گزینه ۴:
<

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

🟢 توضیح :

‏عملگر <= برای بررسی کوچک‌تر یا مساوی بودن یک مقدار از مقدار دیگر استفاده می‌شود.

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

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

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

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

از منحنی یادگیری (Learning Curve) برای تشخیص مشکل مدل استفاده کن.

🔹 منحنی یادگیری یا Learning Curve نشون میده که خطای آموزش و اعتبارسنجی (validation) در طول افزایش تعداد داده‌ها یا در طول epochs چطور تغییر می‌کنه.

اگر خطای آموزش و تست هر دو بالا باشن ➝ مدل دچار Underfitting شده.

اگر خطای آموزش پایین ولی تست بالا باشه ➝ مدل دچار Overfitting شده.

اگر با افزایش داده خطای تست کاهش پیدا کنه ➝ جمع‌آوری داده بیشتر می‌تونه مدل رو بهتر کنه.

به زبان ساده: منحنی یادگیری مثل یک آینه‌ست که نشون میده مدل مشکلش کجاست: خیلی ساده‌ست یا زیادی پیچیده.

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


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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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


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


بریم سراغ Event Sourcing 📜 و توضیح کاملش همراه با مثال عملی و مزایا:


## 🎯 تعریف Event Sourcing

در روش معمول برنامه‌نویسی، ما فقط وضعیت فعلی یک موجودیت (مثل حساب بانکی، سفارش یا کاربر) را ذخیره می‌کنیم.
در Event Sourcing اما هر تغییر یا رویداد (event) ذخیره می‌شود و وضعیت فعلی تنها با بازپخش این رویدادها بازسازی می‌شود.



## چرا Event Sourcing مفیده؟

⬅️ تاریخچه کامل تغییرات همیشه موجود است.
⬅️ امکان بازسازی وضعیت در هر زمان وجود دارد.
⬅️ سیستم برای audit، debug و rollback آماده است.
⬅️ باعث طراحی سیستم‌های مقاوم و قابل توسعه می‌شود.



## مثال عملی در Python

class Account:
def __init__(self):
self.events = []

def deposit(self, amount):
self.events.append({"type": "deposit", "amount": amount})

def withdraw(self, amount):
self.events.append({"type": "withdraw", "amount": amount})

def get_balance(self):
balance = 0
for event in self.events:
if event["type"] == "deposit":
balance += event["amount"]
elif event["type"] == "withdraw":
balance -= event["amount"]
return balance

# استفاده
account = Account()
account.deposit(100)
account.withdraw(30)
account.deposit(50)

print(account.get_balance()) # خروجی: 120


### 💡 مزایا:

⬅️ تاریخچه دقیق همه تغییرات موجود است.
⬅️ امکان بازسازی وضعیت گذشته یا در زمان خاص وجود دارد.
⬅️ راحت برای audit و گزارش‌گیری در سیستم‌های مالی و بانکی.
⬅️ سیستم قابل گسترش و مقاوم در برابر خطاست.




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

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

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

آدرس وبسایت:
https://Tutorial24.ir
💠 عضو جامع ترین کانال های توسعه فردی، روانشناسی و موفقیت شوید:

➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0

➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0

شامل موضوعات آموزشی زیر:

توسعه و رشد فردی
افزایش ثروت
هدف گذاری و مدیریت زمان
مهارت های اجتماعی، ارتباطی و فن بیان
روانشناسی و خودیاری
موفقیت
عادات موثر
سلامت و تغذیه سالم
موفقیت شغلی
عبارات تاکیدی
مدیریت اضطراب و خشم
روان درمانی CBT و ACT
شخصیت شناسی و تحلیل روانشناسی
انگیزشی
کودک درون
تکنیک های NLP
یوگا
افزایش حافظه
مدیتیشن
موفقیت تحصیلی
مطالعه موثر
افزایش اعتماد به نفس
افزایش تمرکز
تفکر مثبت
افزایش خلاقیت
نقل قول های انگیزشی

با کلیک بر روی لینک زیر عضو تمامی این کانال ها شوید:

➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0

➡️ https://t.me/addlist/AX8uaLK6gE1jNzg0


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



🔁 Idempotency

🔹 ایده اصلی

در برنامه‌نویسی (به‌ویژه در APIها) گاهی ممکنه یک درخواست چند بار پشت سر هم ارسال بشه.
اگر هر بار نتیجه متفاوت باشه → مشکل و خطا ایجاد میشه.

Idempotency یعنی:
اجرای چندباره‌ی یک عمل → همون نتیجه‌ی بار اول رو بده، بدون اثر جانبی اضافی.



🔹 مثال ساده

* Idempotent: حذف رکوردی با DELETE /users/123

⬅️ بار اول → کاربر حذف میشه
⬅️ بار دوم → چیزی برای حذف نیست، ولی خطا هم نمی‌ده
➡️ Non-Idempotent: خرید با POST /orders

⬅️ هر بار درخواست جدید → یک سفارش جدید ایجاد میشه



مثال (Python – API شبیه‌سازی)

class UserDB:
def __init__(self):
self.users = {"123": "Ali", "456": "Sara"}

def delete_user(self, user_id):
if user_id in self.users:
del self.users[user_id]
return f"User {user_id} deleted "
else:
return f"User {user_id} not found, but still OK "

db = UserDB()

# اجرای چندباره‌ی عمل حذف
print(db.delete_user("123")) # User 123 deleted
print(db.delete_user("123")) # User 123 not found, but still OK


🎯 چرا مهمه؟

⬅️ در پرداخت آنلاین اگر کاربر دوبار روی دکمه "پرداخت" بزنه، نباید دوبار پول کم بشه.
⬅️ در شبکه‌های ناپایدار (مثل موبایل) ممکنه یک درخواست چند بار Retry بشه.
⬅️ در APIهای REST برای اطمینان از امنیت و ثبات خیلی مهمه.



🛠️ تکنیک‌های پیاده‌سازی

⬅️ استفاده از Idempotency Key → هر درخواست یک کلید یکتا داره.
⬅️ طراحی درست متدهای HTTP:

➡️ GET, PUT, DELETE باید Idempotent باشن.
➡️ POST معمولاً نیست، مگر با کلید خاص مدیریت بشه.



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

➡️ Stripe, PayPal → برای جلوگیری از دوباره شارژ کردن کاربر.
⬅️ سرویس‌های ابری (AWS, GCP) → برای مدیریت منابع (مثل ایجاد VM یا Bucket).
⬅️ سیستم‌های بانکی و رزرو بلیط.



🪄 به بیان ساده: Idempotency یعنی اگر کاربر ۱۰ بار روی دکمه بزنه، انگار فقط ۱ بار زده.



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

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

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

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

حالا بریم سراغ یه فرق اساسی که اغلب تازه‌کارها رو گیج می‌کنه: تفاوت پارامترها با هایپرپارامترها! 🧐

پارامترها در مقابل هایپرپارامترها 🍰

تصور کن می‌خوای یک کیک بپزی. 🎂

مواد لازم (آرد، شکر، تخم مرغ) رو با هم ترکیب می‌کنی. مقدار هر ماده بر اساس تجربه و دستور پخت تنظیم می‌شه.

تنظیمات فر (دمای فر، زمان پخت) رو قبل از اینکه کیک رو داخلش بذاری، مشخص می‌کنی.

در یادگیری ماشین هم همینطوره. مدل دو نوع متغیر داره:

۱. پارامترها (Parameters) 🧠

این‌ها متغیرهای درونی مدل هستن که به صورت خودکار و از طریق آموزش روی داده‌ها یاد گرفته می‌شن.

نقش: دانش واقعی مدل رو تشکیل می‌دن.

مثال:

وزن‌ها (Weights) و بایاس‌ها (Biases) در یک شبکه عصبی.

ضرایب (Coefficients) در یک مدل رگرسیون خطی.

این‌ها همون چیزهایی هستن که مدل در حین آموزش تنظیمشون می‌کنه تا تابع هزینه به حداقل برسه.

۲. هایپرپارامترها (Hyperparameters) 🛠

این‌ها متغیرهای بیرونی مدل هستن که ما، به عنوان یک دانشمند داده، قبل از شروع فرآیند آموزش، اون‌ها رو به صورت دستی تنظیم می‌کنیم.

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

مثال:

نرخ یادگیری (Learning Rate) در الگوریتم نزول گرادیان.

تعداد درختان در یک مدل جنگل تصادفی.

تعداد لایه‌های پنهان در یک شبکه عصبی.

خلاصه:

پارامترها مثل مواد کیک هستن که با ترکیبشون، کیک درست می‌شه.

هایپرپارامترها مثل تنظیمات فر هستن که تعیین می‌کنن کیک چطور پخته بشه.

مدل پارامترها رو یاد می‌گیره، ولی تو باید هایپرپارامترها رو بهش بگی تا یاد بگیره! 😉

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


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

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

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


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



بریم سراغ Idempotency 🔁



🎯 تعریف

Idempotent یعنی یک عملیات، حتی اگر چند بار پشت سر هم اجرا بشه، نتیجه‌اش تغییری نکنه.

مثال ساده:

* DELETE /user/123 اگر کاربر حذف بشه، چه یک‌بار اجرا بشه چه ۱۰ بار، نتیجه نهایی یکیه → کاربر دیگه وجود نداره.
* در مقابل POST /payments اگر بدون idempotency باشه، هر بار درخواست بزنی پول دوباره برداشت میشه 😱



کاربرد در APIهای پرداخت

فرض کن کاربر روی دکمه "پرداخت" دوبار کلیک می‌کنه یا اینترنت قطع و وصل میشه.
اگر API شما idempotent نباشه، ممکنه دوبار پول از حسابش کم بشه.

راه‌حل: استفاده از Idempotency Key 🔑



🐍 مثال با Python (ساده‌سازی شده)

class PaymentAPI:
def __init__(self):
self.processed_requests = {} # ذخیره idempotency key

def process_payment(self, user_id, amount, key):
if key in self.processed_requests:
# درخواست تکراری → نتیجه قبلی رو برگردون
return self.processed_requests[key]

# اینجا فرض کنیم تراکنش انجام میشه
result = {
"user_id": user_id,
"amount": amount,
"status": "success"
}

# ذخیره نتیجه بر اساس کلید idempotency
self.processed_requests[key] = result
return result


# استفاده
api = PaymentAPI()

# کاربر دوبار درخواست میفرسته با همون key
print(api.process_payment(1, 100, "txn_123"))
print(api.process_payment(1, 100, "txn_123")) # دوباره پول کم نمیشه


💡 مزایا:

* جلوگیری از عملیات تکراری (مخصوصاً توی پرداخت‌ها).
* سیستم پایدارتر و امن‌تر میشه.
* تجربه کاربری بهتر (کاربر دوبار پول کم شدن یا ثبت اشتباه رو نمی‌بینه).





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

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

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

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


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




## 🔎 Fail Fast Principle (اصل خطای سریع)

ایده‌ی اصلی اینه:
اگر مشکلی توی داده یا شرایط برنامه وجود داره، همون اول جلوی ادامه‌ی کار گرفته بشه و سریع خطا داده بشه، به‌جای اینکه مشکل پنهان بمونه و بعداً توی جاهای دیگه برنامه دردسر درست کنه.



📌 چرا مهمه؟

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



مثال ساده – تقسیم عدد

def divide(a, b):
if b == 0:
raise ValueError(" Cannot divide by zero")
return a / b

print(divide(10, 2)) # خروجی: 5
print(divide(10, 0)) # سریع خطا میده
اینجا قبل از اینکه وارد عملیات خطرناک (تقسیم بر صفر) بشیم، برنامه فوراً متوقف میشه و پیام واضح میده.



مثال واقعی‌تر – پردازش کاربر

فرض کن یک API داری که باید داده‌ی کاربر رو ذخیره کنه:

بدون Fail Fast:

def save_user(user):
# فرض کردی داده‌ها درست هستن
db[user["id"]] = user
print("User saved!")
اگه `user مقدار None باشه یا id نداشته باشه، این خطا خیلی دیر اتفاق می‌افته و شاید توی دیتابیس داده‌های ناقص وارد بشه.

✔️ با Fail Fast:

def save_user(user):
if not user:
raise ValueError(" User cannot be None")
if "id" not in user:
raise ValueError(" User must have an id")

db[user["id"]] = user
print(" User saved successfully")
اینجوری خطا همون لحظه و با پیام روشن اتفاق میفته.



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

* طراحی APIها (ورودی‌های نامعتبر رو همون اول reject کن).
* Validation فرم‌ها (مثلاً ایمیل اشتباه → سریع خطا).
* تراکنش‌های مالی (اگه شرطی درست نبود، سریع لغو بشه).
* Microservices (به‌جای اینکه درخواست خراب بره لایه‌های پایین، همون ابتدا خطا بده).




💡 مقایسه با سبک “خطا دیررس” (Fail Silent)

* Fail Fast: سریع خطا → رفع راحت‌تر.
* Fail Silent: خطا پنهان می‌مونه → بعداً مشکلات جدی.



👉 یه تشبیه جالب:
مثل ماشینیه که وقتی روغن نداره چراغ قرمز روشن می‌کنه و سریع هشدار میده (Fail Fast)،
نه ماشینی که بدون هشدار ادامه میده تا موتور کامل بسوزه (Fail Silent). 🚗🔥



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

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

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

آدرس وبسایت:
https://Tutorial24.ir
🔵 کوییز #HTML

🟣 موضوع : ‏استفاده از Google Fonts در HTML

🟢 سوال :

‏چگونه می‌توان عملکرد بارگیری Google Fonts را بهینه کرد؟

گزینه ۱:
‏بارگیری تمام وزن‌های موجود یک فونت

گزینه ۲:
‏استفاده از تعداد کمتری فونت و وزن‌های ضروری

گزینه ۳:
‏استفاده از دستور @import به جای <link>

گزینه ۴:
‏قرار دادن تگ <link> در انتهای تگ <body>



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

🟢 توضیح :

‏برای بهینه‌سازی عملکرد، توصیه می‌شود فقط فونت‌ها و وزن‌هایی که واقعاً در وب‌سایت استفاده می‌شوند را بارگیری کنید. استفاده از تعداد کمتر فونت و وزن‌های غیرضروری می‌تواند به کاهش زمان بارگیری کمک کند.

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

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

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

آدرس وبسایت:
https://Tutorial24.ir
🔵 با عضویت در لیست تلگرامی جامع آموزش زبان زیر عضو بی نظیرترین‌ و کامل ترین مجموعه آموزش زبان انگلیسی تلگرامی شوید:

🟢 پادکست، کوییز، گرامر، آیلتس، تافل، ویدیو، آموزش زبان به کودکان، اصطلاحات انگلیسی، زبان کنکور و ... :

https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0
https://t.me/addlist/hK74E7joz0ZiOGY0