Processing math: 100%
بازگشت به دوره

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

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

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


📖 فهرست مطالب

  1. رگرسیون لجستیک چیست؟
  2. نحوه کار رگرسیون لجستیک
  3. پیاده‌سازی رگرسیون لجستیک در پایتون
  4. ضریب (Coefficient) در رگرسیون لجستیک
  5. محاسبه احتمال سرطانی بودن تومور

1️⃣ رگرسیون لجستیک چیست؟ 🧐

رگرسیون لجستیک یک الگوریتم یادگیری ماشین است که برای حل مسائل طبقه‌بندی (Classification) استفاده می‌شود. برخلاف رگرسیون خطی (Linear Regression) که مقادیر عددی را پیش‌بینی می‌کند، رگرسیون لجستیک احتمال یک دسته خاص را مشخص می‌کند.

📌 مثال:
✅ آیا یک ایمیل اسپم است یا خیر؟
✅ آیا یک تومور سرطانی است یا خوش‌خیم؟
✅ پیش‌بینی جنسیت کاربر بر اساس سن و قد.

📌 انواع رگرسیون لجستیک:

نوعتوضیحمثال
دودویی (Binary)دو خروجی دارد: ۰ یا ۱تشخیص سرطانی بودن تومور (بله یا خیر)
چندکلاسه (Multinomial)بیش از دو خروجی دارددسته‌بندی گل‌های زنبق به ۳ گونه مختلف

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


2️⃣ نحوه کار رگرسیون لجستیک ⚙️

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


P(Y=1) = \frac{e^{(b_0 + b_1 X)}}{e^{(b_0 + b_1 X)} + 1}

🔹 b₀ و b₁: ضرایب مدل که یاد گرفته می‌شوند.
🔹 X: مقدار متغیر ورودی (مثلاً اندازه تومور).
🔹 P(Y=1): احتمال اینکه خروجی ۱ (مثلاً سرطانی بودن تومور) باشد.

🛠 تبدیل مقدار به احتمال:

  1. ابتدا مقدار ورودی را در ضریب ضرب می‌کنیم.
  2. مقدار حاصل را نمایی می‌کنیم تا نسبت شانس (Odds) را بدست آوریم.
  3. نسبت شانس را به احتمال تبدیل می‌کنیم.

3️⃣ پیاده‌سازی رگرسیون لجستیک در پایتون 🐍

📌 وارد کردن کتابخانه‌های لازم

import numpy
from sklearn import linear_model

📌 ایجاد مجموعه داده (Dataset)

# X: اندازه تومور در سانتی‌متر
X = numpy.array([3.78, 2.44, 2.09, 0.14, 1.72, 1.65, 4.92, 4.37, 4.96, 4.52, 3.69, 5.88]).reshape(-1,1)

# y: برچسب‌ها (۰ = غیرسرطانی، ۱ = سرطانی)
y = numpy.array([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1])

💡 نکته: آرایه X باید به یک ستون (column) تبدیل شود تا در مدل ()LogisticRegression قابل استفاده باشد.

📌 ساخت و آموزش مدل

logr = linear_model.LogisticRegression()
logr.fit(X, y)

مدل ما اکنون آماده پیش‌بینی است! 🎯

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

predicted = logr.predict(numpy.array([3.46]).reshape(-1,1))
print(predicted)

🔹 خروجی: [0] → یعنی تومور سرطانی نیست.

4️⃣ ضریب (Coefficient) در رگرسیون لجستیک 📊

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

📌 محاسبه ضریب و نسبت شانس (Odds Ratio)

log_odds = logr.coef_
odds = numpy.exp(log_odds)
print(odds)

🔹 خروجی: [4.03541657]

💡 این مقدار نشان می‌دهد که به ازای هر ۱ میلی‌متر افزایش اندازه تومور، احتمال سرطانی بودن آن ۴ برابر بیشتر می‌شود.

5️⃣ محاسبه احتمال سرطانی بودن تومور 🎯

📌 ایجاد تابع محاسبه احتمال

def logit2prob(logr, x):
log_odds = logr.coef_ * x + logr.intercept_
odds = numpy.exp(log_odds)
probability = odds / (1 + odds)
return probability

📌 محاسبه احتمال برای هر مقدار در X

print(logit2prob(logr, X))

📌 نتایج تحلیل احتمال

اندازه تومور (cm)احتمال سرطانی بودن
3.7861%
2.4419%
2.0913%
0.141%
1.728%
1.657%
4.9288%
4.3778%
4.9689%
4.5281%
3.6957%
5.8896%

🔍 جمع‌بندی

✅ رگرسیون لجستیک برای طبقه‌بندی داده‌ها استفاده می‌شود.
✅ در این روش، احتمال وقوع یک رویداد محاسبه شده و به دسته‌های ۰ یا ۱ تبدیل می‌شود.
✅ در مثال ما، بر اساس اندازه تومور احتمال سرطانی بودن آن محاسبه شد.
✅ ضرایب مدل نشان می‌دهند که چگونه تغییر در متغیر مستقل بر احتمال تأثیر می‌گذارد.
✅ می‌توان با استفاده از فرمول احتمال، شانس سرطانی بودن را برای هر مقدار مشخص کرد.