FA-TOOLS — Header Component

رگرسیون خطی با پایتون — کد آماده کامل

سلام رفیق برنامه‌نویس! اگه دنبال اینی که چطور با پایتون یه مدل رگرسیون خطی رو از صفر تا صد پیاده‌سازی کنی، جای درستی اومدی. رگرسیون خطی، یکی از اون ابزارهای پایه‌ای و قدرتمند تو دنیای یادگیری ماشینه که به ما کمک می‌کنه رابطه‌ی بین متغیرها رو درک کنیم و آینده رو پیش‌بینی کنیم. ما اینجا قراره باهم قدم به قدم پیش بریم، از آماده‌سازی داده‌ها بگیر تا ساخت مدل و ارزیابی نهایی، همه با کدهای آماده و قابل فهم. قبل از هر چیز، یه سر به فروشگاه ابزارهای fa-tools.ir بزن تا با بهترین ابزارهای برنامه‌نویسی آشنا بشی و کارتو راه بندازی! اگه سؤالی داشتی یا به کمک نیاز پیدا کردی، می‌تونی همین حالا با شماره ۰۹۲۰۲۲۳۲۷۸۹ تماس بگیری. بزن بریم!

🗺️ نقشه راه: رگرسیون خطی با پایتون در یک نگاه

رگرسیون خطی با پایتون — کد آماده کامل — تصویر 1
┌───────────────────────────────────────────────────────────┐
│  🧠 مقدمه و چرا رگرسیون خطی؟                                     │
│  └─ اهمیت رگرسیون خطی و کاربردهای آن در دنیای واقعی       │
│                                                           │
│  🛠️ آماده‌سازی محیط پایتون                                    │
│  └─ نصب کتابخانه‌های ضروری (NumPy, Pandas, Scikit-learn)   │
│                                                           │
│  📊 گام ۱: جمع‌آوری و پاکسازی داده‌ها                          │
│     └─ بارگذاری داده‌ها، بررسی اولیه، برخورد با مقادیر گمشده    │
│                                                           │
│  ⚙️ گام ۲: ساخت و آموزش مدل رگرسیون خطی                       │
│     └─ تقسیم داده‌ها (آموزش/آزمون)، پیاده‌سازی LinearRegression │
│                                                           │
│  📈 گام ۳: ارزیابی و تفسیر مدل                                │
│     └─ معیارهای عملکرد (R-squared, MSE, MAE)، تشخیص بیش‌برازش  │
│                                                           │
│  📉 گام ۴: بصری‌سازی نتایج                                   │
│     └─ ترسیم خط رگرسیون، نمودارهای پراکندگی و باقیمانده‌ها    │
│                                                           │
│  💡 نکات پیشرفته و عیب‌یابی                                  │
│     └─ Feature Engineering، Regularization، رفع خطاهای رایج    │
└───────────────────────────────────────────────────────────┘
    

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

رگرسیون خطی چیه؟ یه دید کلی برای شروع کار

رگرسیون خطی با پایتون — کد آماده کامل — تصویر 2

تصور کن می‌خوای قیمت خونه‌ای رو پیش‌بینی کنی. چه فاکتورهایی رو در نظر می‌گیری؟ متراژ، تعداد اتاق‌ها، محله، سن بنا و … . رگرسیون خطی دقیقاً همین کارو برات می‌کنه. این مدل تلاش می‌کنه رابطه‌ی خطی بین یک یا چند متغیر مستقل (همون فاکتورها) و یک متغیر وابسته (مثل قیمت خونه) رو پیدا کنه. هدف اصلیش اینه که یه خط راست (یا یه ابرصفحه در ابعاد بالاتر) بکشه که بهترین تطابق رو با نقاط داده‌ای داشته باشه و بتونه برای داده‌های جدید، پیش‌بینی‌های دقیقی ارائه بده.

فرمول پایه رگرسیون خطی تک‌متغیره خیلی ساده‌ست: Y = β₀ + β₁X + ε. اینجا Y متغیر وابسته ماست، X متغیر مستقل، β₀ عرض از مبدأ (intercept)، β₁ شیب خط (coefficient) و ε هم خطای غیرقابل توضیح مدل رو نشون می‌ده. در واقع، ما با پایتون به دنبال پیدا کردن بهترین β₀ و β₁ هستیم که خطای پیش‌بینی رو به حداقل برسونن.

چرا پایتون، رفیقِ جون‌جونی ما برای رگرسیون خطی؟

رگرسیون خطی با پایتون — کد آماده کامل — تصویر 3

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

  • کتابخانه‌های قدرتمند: پایتون یه عالمه کتابخونه خفن داره که کار ما رو راحت می‌کنه. NumPy برای کار با آرایه‌ها، Pandas برای دستکاری داده‌ها، و مهمتر از همه Scikit-learn که پکیج اصلی ما برای پیاده‌سازی مدل‌های یادگیری ماشینه. می‌تونی نمونه‌های بیشتری از کدهای پایتون رو تو بخش اسنیپت‌های پایتون fa-tools.ir ببینی.
  • جامعه بزرگ: هر مشکلی که برات پیش بیاد، احتمالاً یکی دیگه قبلاً باهاش دست و پنجه نرم کرده و جوابش تو Stack Overflow یا فروم‌های دیگه پیدا میشه.
  • سادگی و خوانایی: سینتکس پایتون خیلی شبیه زبان آدمیزاده و راحت میشه خوندش و نوشت. این یعنی کمتر وقتتو صرف رفع خطاهای سینتکسی می‌کنی و بیشتر رو تحلیل داده‌ها تمرکز می‌کنی.
  • ابزارهای بصری‌سازی: با کتابخانه‌هایی مثل Matplotlib و Seaborn، می‌تونی نتایج مدل رو به بهترین شکل بصری‌سازی کنی و به وضوح رابطه‌ها رو ببینی.

آماده‌سازی محیط: پکیج‌ها رو نصب کنیم

اول از همه، باید مطمئن بشیم که همه ابزارهای مورد نیازمون نصب شده‌ن. اگه از Anaconda استفاده می‌کنی، اکثر این پکیج‌ها از قبل نصب هستن. در غیر این صورت، با استفاده از pip می‌تونی نصبشون کنی. ترمینال یا Anaconda Prompt رو باز کن و دستورات زیر رو اجرا کن:

# نصب NumPy برای محاسبات عددی
pip install numpy

# نصب Pandas برای دستکاری و تحلیل داده
pip install pandas

# نصب Scikit-learn برای مدل‌سازی یادگیری ماشین
pip install scikit-learn

# نصب Matplotlib برای بصری‌سازی
pip install matplotlib

# نصب Seaborn برای بصری‌سازی پیشرفته‌تر
pip install seaborn
    

اگه قبلاً این پکیج‌ها رو نصب کردی و می‌خوای مطمئن بشی که آپدیت هستن، می‌تونی از دستور pip install --upgrade [package_name] استفاده کنی. این قدم خیلی مهمیه، چون اگه پکیجی نباشه، بقیه کدهامون کار نمی‌کنن!

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

فرض می‌کنیم یه مجموعه داده (dataset) داریم که شامل اطلاعاتی مثل “متراژ خانه” و “قیمت” هست و می‌خوایم رابطه‌شون رو با رگرسیون خطی مدل کنیم. برای سادگی، ما خودمون یه سری داده ساختگی ایجاد می‌کنیم. ولی تو دنیای واقعی، معمولاً داده‌ها رو از فایل‌های CSV یا دیتابیس‌ها می‌خونی.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# تولید داده‌های ساختگی برای مثال
np.random.seed(0) # برای تکرارپذیری نتایج
area = np.random.rand(100, 1) * 100 + 50 # متراژ خانه (50 تا 150 متر)
price = 2 * area + 10 + np.random.randn(100, 1) * 20 # قیمت خانه

# ساخت یک DataFrame از داده‌ها
data = pd.DataFrame({'Area': area.flatten(), 'Price': price.flatten()})

# نمایش 5 ردیف اول داده‌ها
print(data.head())

# اطلاعات آماری مختصر
print(data.describe())

# بررسی مقادیر گمشده (Missing Values)
print(data.isnull().sum())
    

تو دنیای واقعی، ممکنه با داده‌های کثیف، مقادیر گمشده (missing values) یا داده‌های پرت (outliers) مواجه بشی. data.isnull().sum() بهت کمک می‌کنه بفهمی کدوم ستون‌ها مقادیر گمشده دارن. می‌تونی اون‌ها رو حذف کنی یا با میانگین/میانه پرشون کنی (Imputation). این مرحله، یعنی Data Preprocessing، خودش یه بحث مفصله و خیلی تو کیفیت نهایی مدل تاثیر داره.

💡 نکته: اهمیت پیش‌پردازش داده

کیفیت داده ورودی، مستقیماً با کیفیت مدل خروجی رابطه داره. اگه داده‌هات تمیز نباشن، حتی بهترین مدل‌ها هم نمی‌تونن کار خاصی بکنن. این همون "Garbage In, Garbage Out" معروفه! همیشه وقت کافی برای پاکسازی و آماده‌سازی داده‌ها بذار.

گام دوم: مدل رگرسیون خطی رو بسازیم و آموزش بدیم

حالا که داده‌هامون آماده‌ست، وقتشه که مدل رگرسیون خطی رو از کتابخونه Scikit-learn صدا بزنیم و آموزش بدیم. قبل از اون، باید داده‌هامون رو به دو بخش “آموزش” (Training) و “آزمون” (Testing) تقسیم کنیم. این کار بهمون کمک می‌کنه عملکرد مدل رو روی داده‌هایی که قبلاً ندیده، ارزیابی کنیم و مطمئن بشیم که مدل بیش‌برازش (Overfitting) پیدا نکرده.

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

# تعریف متغیرهای مستقل (X) و وابسته (y)
X = data[['Area']] # متغیر مستقل (Area)
y = data['Price']   # متغیر وابسته (Price)

# تقسیم داده‌ها به مجموعه آموزش و آزمون (80% آموزش، 20% آزمون)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# ایجاد نمونه‌ای از مدل رگرسیون خطی
model = LinearRegression()

# آموزش مدل با استفاده از داده‌های آموزش
model.fit(X_train, y_train)

# چاپ ضرایب مدل
print(f"Coefficient (شیب): {model.coef_[0]:.2f}")
print(f"Intercept (عرض از مبدأ): {model.intercept_:.2f}")
    

پارامتر random_state رو برای این تنظیم می‌کنیم که هر بار کد رو اجرا می‌کنی، تقسیم‌بندی داده‌ها یکسان باشه و نتایجت قابل تکرار باشن. بعد از آموزش، مدل ضرایب (coefficients) و عرض از مبدأ (intercept) رو برای ما محاسبه می‌کنه. این مقادیر، همون β₀ و β₁ تو فرمول رگرسیون خطی هستن و نشون میدن که با تغیر یک واحد در متغیر مستقل، متغیر وابسته چقدر تغییر می‌کنه.

گام سوم: مدل رو ارزیابی کنیم

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

  • R-squared (ضریب تعیین): نشون میده که چند درصد از واریانس متغیر وابسته توسط متغیر مستقل توضیح داده میشه. هرچی به 1 نزدیک‌تر باشه، بهتره.
  • Mean Absolute Error (MAE): میانگین قدر مطلق اختلاف بین مقادیر واقعی و پیش‌بینی شده. تفسیرش ساده‌ست: به طور متوسط مدل چقدر خطا داره.
  • Mean Squared Error (MSE): میانگین مجذور اختلاف بین مقادیر واقعی و پیش‌بینی شده. به خطاهای بزرگتر وزن بیشتری میده.
  • Root Mean Squared Error (RMSE): ریشه دوم MSE. مثل MAE تو همون واحد متغیر وابسته قرار می‌گیره و تفسیرش راحت‌تره.
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score

# پیش‌بینی روی داده‌های آزمون
y_pred = model.predict(X_test)

# محاسبه معیارها
mae = mean_absolute_error(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)
rmse = np.sqrt(mse)
r2 = r2_score(y_test, y_pred)

print(f"Mean Absolute Error (MAE): {mae:.2f}")
print(f"Mean Squared Error (MSE): {mse:.2f}")
print(f"Root Mean Squared Error (RMSE): {rmse:.2f}")
print(f"R-squared (R2): {r2:.2f}")
    

⚠️ ارزیابی رو جدی بگیر!

اگه R-squared نزدیک به صفر یا منفی بود، مدل خوبی نداری. اگه RMSE یا MAE خیلی زیاد بود، باز هم مدلت عملکرد ضعیفی داره. این مقادیر رو با میانگین متغیر وابسته مقایسه کن تا بفهمی این خطاها از نظر عملی چقدر مهم هستن.

گام چهارم: نتایج رو بصری‌سازی کنیم

دیدن نتایج همیشه از خوندن اعداد بهتره. با Matplotlib و Seaborn می‌تونیم یه نمودار پراکندگی (Scatter Plot) رسم کنیم و خط رگرسیون رو روش بندازیم تا رابطه بین متغیرها رو به وضوح ببینیم.

# تنظیم استایل گراف‌ها
sns.set_style("whitegrid")

# رسم نمودار پراکندگی داده‌های آموزشی و خط رگرسیون
plt.figure(figsize=(10, 6))
sns.scatterplot(x='Area', y='Price', data=data, label='داده‌های واقعی', color='#6A0572')
plt.plot(X_test, y_pred, color='#FF5555', linewidth=2, label='خط رگرسیون')
plt.xlabel('متراژ (متر مربع)', fontsize=12)
plt.ylabel('قیمت (میلیون تومان)', fontsize=12)
plt.title('رگرسیون خطی: متراژ در مقابل قیمت', fontsize=14)
plt.legend(fontsize=10)
plt.show()
    

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

کد کامل و آماده: یه مثال کاربردی برای همه بخش‌ها

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

# ----------------------------------------------------
# کد کامل رگرسیون خطی با پایتون - Fa-Tools.ir
# ----------------------------------------------------

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score

# --- 1. تولید داده‌های ساختگی (در مثال واقعی: بارگذاری از CSV یا DB) ---
np.random.seed(0)
area = np.random.rand(100, 1) * 100 + 50
price = 2 * area + 10 + np.random.randn(100, 1) * 20
data = pd.DataFrame({'Area': area.flatten(), 'Price': price.flatten()})

# --- 2. آماده‌سازی داده‌ها ---
X = data[['Area']]
y = data['Price']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# --- 3. ساخت و آموزش مدل ---
model = LinearRegression()
model.fit(X_train, y_train)

# --- 4. ارزیابی مدل ---
y_pred = model.predict(X_test)
mae = mean_absolute_error(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)
rmse = np.sqrt(mse)
r2 = r2_score(y_test, y_pred)

print("n--- نتایج ارزیابی مدل ---")
print(f"ضریب (Coefficient): {model.coef_[0]:.2f}")
print(f"عرض از مبدأ (Intercept): {model.intercept_:.2f}")
print(f"MAE: {mae:.2f}")
print(f"MSE: {mse:.2f}")
print(f"RMSE: {rmse:.2f}")
print(f"R-squared: {r2:.2f}")

# --- 5. بصری‌سازی نتایج ---
sns.set_style("whitegrid")
plt.figure(figsize=(10, 6))
sns.scatterplot(x='Area', y='Price', data=data, label='داده‌های واقعی', color='#6A0572', s=70, alpha=0.7)
plt.plot(X_test, y_pred, color='#FF5555', linewidth=2, label='خط رگرسیون پیش‌بینی شده')
plt.xlabel('متراژ (متر مربع)', fontsize=12)
plt.ylabel('قیمت (میلیون تومان)', fontsize=12)
plt.title('رگرسیون خطی: متراژ در مقابل قیمت خانه', fontsize=14)
plt.legend(fontsize=10)
plt.grid(True, linestyle='--', alpha=0.6)
plt.show()

# --- 6. پیش‌بینی برای داده جدید ---
new_area = np.array([[85]]) # یک خانه با 85 متر متراژ
predicted_price = model.predict(new_area)
print(f"nپیش‌بینی قیمت برای خانه 85 متری: {predicted_price[0]:.2f} میلیون تومان")
    

نکات طلایی برای رگرسیون خطی بهتر

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

مقایسه نکات مهم در رگرسیون خطی
نکته توضیح مختصر
مهندسی ویژگی (Feature Engineering) ساخت ویژگی‌های جدید از ویژگی‌های موجود برای بهبود عملکرد مدل. مثلاً از “عرض” و “طول” می‌تونی “مساحت” رو بسازی.
حذف داده‌های پرت (Outlier Handling) داده‌های پرت می‌تونن خط رگرسیون رو به شدت منحرف کنن. شناسایی و حذف یا اصلاح اون‌ها ضروریه.
چندهم‌خطی (Multicollinearity) اگه متغیرهای مستقل باهم رابطه قوی داشته باشن، ضرایب مدل ممکنه ناپایدار بشن. باید این ویژگی‌ها رو شناسایی و مدیریت کنی.
نرمال‌سازی و استانداردسازی مقیاس‌بندی ویژگی‌ها می‌تونه به همگرایی سریع‌تر و عملکرد بهتر مدل، خصوصاً در مدل‌های پیچیده‌تر، کمک کنه.
رگرسیون چندگانه اگه بیش از یک متغیر مستقل داری، از رگرسیون خطی چندگانه استفاده کن (کتابخانه Scikit-learn به طور خودکار این رو مدیریت می‌کنه).

عیب‌یابی سریع: مشکلات رایج و راه‌حل‌هاشون

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

  • مشکل: “مدل من خوب پیش‌بینی نمی‌کنه و R-squared خیلی پایینه!”
    • راه‌حل:
      1. بررسی فرضیات: مطمئن شو که رابطه‌ی بین متغیرها واقعاً خطیه. اگه غیرخطیه، رگرسیون خطی مناسب نیست و باید سراغ مدل‌های دیگه (مثل رگرسیون چندجمله‌ای یا درخت تصمیم) بری.
      2. کیفیت داده: داده‌هات رو دوباره بررسی کن. ممکنه مقادیر پرت یا خطای زیادی توشون باشه.
      3. مهندسی ویژگی: آیا می‌تونی ویژگی‌های جدیدی بسازی که قدرت پیش‌بینی مدل رو بیشتر کنن؟
      4. افزایش داده: اگه داده‌هات کمه، شاید مدل نتونه الگوی درستی پیدا کنه.
  • مشکل: “خطای ‘module not found’ موقع ایمپورت کتابخانه‌ها!”
    • راه‌حل:
      1. نصب مجدد: مطمئن شو که کتابخانه رو درست نصب کردی (مثلاً pip install scikit-learn).
      2. محیط مجازی: اگه از محیط‌های مجازی پایتون (مثل venv یا conda env) استفاده می‌کنی، مطمئن شو که پکیج‌ها رو تو همون محیط نصب کردی و کد رو هم تو همون محیط اجرا می‌کنی.
  • مشکل: “نمودار پراکندگی من شبیه ستاره‌های بی‌نظم به نظر می‌رسه و خط رگرسیون اصلا خوب نیست!”
    • راه‌حل:
      1. بررسی Scale داده‌ها: اگه متغیرها مقیاس‌های خیلی متفاوتی دارن، ممکنه بصری‌سازی رو مشکل کنه. سعی کن متغیرها رو نرمال‌سازی یا استانداردسازی کنی (البته برای LinearRegression از sklearn این کار معمولاً لازم نیست ولی می‌تونه تو بعضی موارد کمک کنه).
      2. بررسی Outliers: نقاط پرت می‌تونن ظاهر نمودار رو به هم بریزن. شناسایی و مدیریت اون‌ها رو فراموش نکن.
      3. رابطه غیرخطی: باز هم، شاید رابطه بین متغیرها خطی نیست و باید به فکر مدل‌های دیگه باشی.
  • مشکل: “خطا در plt.show() یا نمایش ندادن نمودار!”
    • راه‌حل:
      1. محیط اجرا: اگه تو محیطی مثل Jupyter Notebook یا IPython کار می‌کنی، ممکنه نیازی به plt.show() نباشه یا باید از %matplotlib inline استفاده کنی. اگه تو یه اسکریپت پایتون معمولی هستی، حتماً باید plt.show() رو آخر کدت بذاری.
      2. بستن نمودارهای قبلی: گاهی اوقات نمودارهای قبلی بسته نشدن و پنجره جدیدی باز نمیشه. از plt.close('all') قبل از رسم نمودار جدید استفاده کن.

سوالات متداول (FAQ)

❓ رگرسیون خطی همیشه بهترین مدله؟

نه، رگرسیون خطی یه مدل ساده‌ست و فرض می‌کنه که رابطه بین متغیرها خطیه. اگه این فرض برقرار نباشه، ممکنه مدل‌های دیگه‌ای مثل رگرسیون چندجمله‌ای، درخت تصمیم (Decision Tree) یا جنگل تصادفی (Random Forest) عملکرد بهتری داشته باشن. همیشه با داده‌هات مشورت کن و ببین کدوم مدل بهتره.

❓ آیا رگرسیون خطی می‌تونه برای پیش‌بینی دسته‌بندی (Classification) استفاده بشه؟

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

❓ Overfitting (بیش‌برازش) چیه و چطور تو رگرسیون خطی ازش جلوگیری کنیم؟

بیش‌برازش وقتی اتفاق میفته که مدل روی داده‌های آموزشی خیلی خوب عمل می‌کنه، اما روی داده‌های جدید (داده‌های آزمون) عملکرد ضعیفی داره. تو رگرسیون خطی، این مشکل معمولاً وقتی پیش میاد که تعداد ویژگی‌ها (متغیرهای مستقل) خیلی زیاد باشه نسبت به تعداد داده‌ها یا ویژگی‌ها به شدت باهم همبسته باشن. برای جلوگیری ازش می‌تونی از تکنیک‌هایی مثل Regularization (مانند Lasso یا Ridge Regression) یا انتخاب ویژگی (Feature Selection) استفاده کنی.

❓ چطور می‌تونم مدل رگرسیون خطی رو ذخیره کنم و بعداً ازش استفاده کنم؟

با استفاده از کتابخونه pickle یا joblib می‌تونی مدل آموزش‌دیده رو ذخیره کنی (Serialization) و بعداً تو یه برنامه دیگه لودش کنی (Deserialization) و ازش برای پیش‌بینی‌های جدید استفاده کنی. این طوری لازم نیست هر بار مدل رو دوباره آموزش بدی.

خب رفیق، تا اینجا با صفر تا صد رگرسیون خطی با پایتون آشنا شدی. حالا می‌تونی بری سراغ داده‌های واقعی خودت و این مدل قدرتمند رو پیاده‌سازی کنی. یادگیری ماشین یه دنیای بی‌کرانه و پر از ماجراست، پس همیشه کنجکاو بمون و دست از یادگیری برندار! اگه سوالی داشتی یا خواستی درباره ابزارهای برنامه‌نویسی بیشتر بدونی، به fa-tools.ir سر بزن یا با شماره ۰۹۲۰۲۲۳۲۷۸۹ تماس بگیر. ما همیشه آماده کمک هستیم.

*توضیح برای کاربر (این بخش جزو مقاله اصلی نیست و فقط برای راهنمایی شماست):*

برای اینکه هدینگ‌ها (H1, H2, H3) و بلاک‌های طراحی شده به درستی در ویرایشگر بلوک (مانند گوتنبرگ در وردپرس) نمایش داده شوند و ویژگی‌های سئو (سایز و ضخامت فونت هدینگ‌ها) اعمال گردد، لطفاً موارد زیر را هنگام کپی و پیست رعایت کنید:

1. **هدینگ‌ها (H1, H2, H3):** متن‌هایی که با تگ <H1 ...>، <H2 ...> و <H3 ...> شروع می‌شوند، باید در یک بلوک Custom HTML یا بلوک Heading قرار گیرند. استایل‌های font-size و font-weight و color که داخل تگ‌ها نوشته شده، برای نمایش مناسب است.

2. **کدهای پایتون و اینفوگرافیک متنی:** این بخش‌ها که داخل تگ <pre> قرار دارند و طراحی خاصی (مثل پس‌زمینه تیره) دارند، باید در یک بلوک Custom HTML یا Code با استایل‌های مربوطه کپی شوند تا طراحی و رنگ‌بندی حفظ شود.

3. **باکس‌های اطلاعاتی (مثل “نکته مهم” یا “ارزیابی رو جدی بگیر!”) و جدول:** این بلوک‌ها که با تگ <div> یا <table> و استایل‌های داخلی تعریف شده‌اند، باید به صورت Custom HTML در ویرایشگر قرار گیرند.

4. **پاراگراف‌ها و لیست‌ها:** این بخش‌ها می‌توانند مستقیماً در بلوک‌های Paragraph و List وردپرس کپی شوند. استایل‌های font-size و line-height و color برای خوانایی بهتر در تمام دستگاه‌ها تعبیه شده است.

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

Table of Contents

آخرین نوشته‌ها