بازگشت به دوره

آموزش رایگان صفر تا صد یادگیری ماشین (Machine Learning) به زبان ساده

0% تکمیل‌شده
0/0 مرحله

آیا می‌خواهید مدل یادگیری ماشین خود را به درستی ارزیابی کنید؟ 🤔 روش Train/Test یکی از بهترین روش‌ها برای بررسی دقت مدل است. در این مقاله، به زبان ساده یاد می‌گیرید که چگونه داده‌ها را به مجموعه‌های آموزش و تست تقسیم کنید و میزان دقت مدل خود را بسنجید.


📌 فهرست مطالب

  1. روش Train/Test چیست؟
  2. تقسیم داده‌ها به مجموعه آموزش و تست
  3. آموزش و تست مدل با استفاده از پایتون
  4. محاسبه دقت مدل با R-squared
  5. پیش‌بینی مقادیر جدید

📢 روش Train/Test چیست؟

Train/Test یک روش رایج در یادگیری ماشین است که برای ارزیابی دقت مدل استفاده می‌شود. این روش شامل دو مرحله است:
آموزش مدل (Train): مدل را با استفاده از یک بخش از داده‌ها آموزش می‌دهیم.
تست مدل (Test): دقت مدل را روی داده‌های جدید بررسی می‌کنیم.

🔹 معمولاً داده‌ها به دو بخش تقسیم می‌شوند:
🔸 ۸۰٪ برای آموزش
🔸 ۲۰٪ برای تست

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


📢 تقسیم داده‌ها به مجموعه آموزش و تست

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

📌 کد زیر یک مجموعه داده تصادفی شامل ۱۰۰ مشتری ایجاد می‌کند:

import numpy
import matplotlib.pyplot as plt

numpy.random.seed(2)

x = numpy.random.normal(3, 1, 100)  # تعداد دقایق قبل از خرید
y = numpy.random.normal(150, 40, 100) / x  # مقدار هزینه شده

plt.scatter(x, y)
plt.show()

🔹 محور X: تعداد دقایقی که مشتری قبل از خرید در فروشگاه می‌ماند.
🔹 محور Y: مقدار پولی که مشتری خرج می‌کند.

حالا داده‌ها را به دو بخش تقسیم می‌کنیم:

train_x = x[:80]  # ۸۰٪ داده‌ها برای آموزش
train_y = y[:80]

test_x = x[80:]  # ۲۰٪ داده‌ها برای تست
test_y = y[80:]

📢 آموزش و تست مدل با استفاده از پایتون

حالا که داده‌ها را آماده کردیم، بیایید یک مدل رگرسیون چندجمله‌ای (Polynomial Regression) روی داده‌ها اعمال کنیم.

📌 کد زیر مدل را ایجاد و روی داده‌های آموزش اجرا می‌کند:

mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))

myline = numpy.linspace(0, 6, 100)

plt.scatter(train_x, train_y)
plt.plot(myline, mymodel(myline))
plt.show()

🔹 این نمودار یک خط رگرسیون چندجمله‌ای را روی داده‌های آموزش نمایش می‌دهد.

📢 محاسبه دقت مدل با R-squared <a id=”r2-score”></a>

R-squared (یا ) نشان می‌دهد که مدل چقدر خوب داده‌ها را توضیح می‌دهد. مقدار R² بین ۰ تا ۱ است:
۰: مدل هیچ ارتباطی با داده‌ها ندارد.
۱: مدل کاملاً داده‌ها را توضیح می‌دهد.

📌 کد زیر مقدار R² را برای داده‌های آموزش محاسبه می‌کند:

from sklearn.metrics import r2_score

r2 = r2_score(train_y, mymodel(train_x))

print(r2)  # مقدار R²

🔹 اگر مقدار R² بالا باشد (مثلاً ۰.۸)، یعنی مدل خوبی داریم.

📌 حالا مقدار R² را روی داده‌های تست حساب کنیم:

r2 = r2_score(test_y, mymodel(test_x))

print(r2)

🔹 اگر مقدار R² روی داده‌های تست هم خوب باشد، یعنی مدل ما به‌درستی آموزش دیده است و Overfitting ندارد.

📢 پیش‌بینی مقادیر جدید

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

📌 مثلاً اگر مشتری ۵ دقیقه در فروشگاه بماند، چقدر خرج خواهد کرد؟

print(mymodel(5))

🔹 خروجی: مدل پیش‌بینی می‌کند که مشتری ۲۲.۸۸ دلار خرج خواهد کرد.


📌 جمع‌بندی

✅ روش Train/Test کمک می‌کند تا دقت مدل یادگیری ماشین را بررسی کنیم.
✅ تقسیم داده‌ها به ۸۰٪ آموزش و ۲۰٪ تست استاندارد است.
R-squared به ما نشان می‌دهد که مدل چقدر خوب داده‌ها را توضیح می‌دهد.
✅ اگر مقدار R² روی داده‌های تست و آموزش مشابه و بالا باشد، مدل ما خوب کار می‌کند.
✅ با استفاده از مدل، می‌توان پیش‌بینی‌هایی برای آینده انجام داد.

🔥 آیا تا به حال از روش Train/Test در پروژه‌های خود استفاده کرده‌اید؟ نظرات خود را با ما در میان بگذارید! 🚀