ЁЯФ╖ рдкрд░рд┐рдЪрдп:
Logistic Regression рдПрдХ Supervised Learning Algorithm рд╣реИ рдЬреЛ Binary Classification рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИред
рдпрд╣ Continuous Output (рдЬреИрд╕реЗ Linear Regression) рдирд╣реАрдВ рджреЗрддрд╛, рдмрд▓реНрдХрд┐ Probability (0 рд╕реЗ 1 рдХреЗ рдмреАрдЪ) рджреЗрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг:
рдИрдореЗрд▓ рд╕реНрдкреИрдо рд╣реИ рдпрд╛ рдирд╣реАрдВ? (Spam / Not Spam)
рдорд░реАрдЬ рдХреЛ рдмреАрдорд╛рд░реА рд╣реИ рдпрд╛ рдирд╣реАрдВ? (Yes / No)
ЁЯФ╢ рдХреНрдпреЛрдВ Logistic?
Linear Regression рдореЗрдВ output рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: тИТтИЮ рд╕реЗ +тИЮ
рд▓реЗрдХрд┐рди Classification рдореЗрдВ рд╣рдореЗрдВ output рдХреЛ Probability рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрддрд╛ рд╣реИ тАФ рдЗрд╕рд▓рд┐рдП рд╣рдо Sigmoid Function рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
ЁЯФв рдлреЙрд░реНрдореВрд▓рд╛:
ЁЯОп Prediction Function:

ЁЯОп Decision Rule:
- рдпрджрд┐ y^0.5 тЖТ Class 1
- рдЕрдиреНрдпрдерд╛ тЖТ Class 0
ЁЯФз рдЙрдкрдпреЛрдЧ рдХреЗ рдХреНрд╖реЗрддреНрд░:
рдХреНрд╖реЗрддреНрд░ | рдЙрдкрдпреЛрдЧ |
---|---|
Email Filter | Spam vs Not Spam |
рд╣реЗрд▓реНрде | рдмреАрдорд╛рд░реА рд╣реИ рдпрд╛ рдирд╣реАрдВ |
Finance | Loan Approve рдпрд╛ Reject |
ЁЯФм Logistic Regression in PyTorch
import torch
import torch.nn as nn
# Dummy data for AND logic gate
X = torch.tensor([[0.,0.],[0.,1.],[1.,0.],[1.,1.]], dtype=torch.float32)
y = torch.tensor([[0.],[0.],[0.],[1.]], dtype=torch.float32)
# Logistic Regression Model
class LogisticRegression(nn.Module):
def __init__(self):
super().__init__()
self.linear = nn.Linear(2, 1)
def forward(self, x):
return torch.sigmoid(self.linear(x))
model = LogisticRegression()
# Loss and Optimizer
criterion = nn.BCELoss() # Binary Cross Entropy Loss
optimizer = torch.optim.SGD(model.parameters(), lr=0.1)
# Training
for epoch in range(1000):
y_pred = model(X)
loss = criterion(y_pred, y)
optimizer.zero_grad()
loss.backward()
optimizer.step()
if epoch % 100 == 0:
print(f"Epoch {epoch}, Loss: {loss.item():.4f}")
# Prediction
with torch.no_grad():
print("Prediction for [1, 1]:", model(torch.tensor([[1., 1.]])).item())
ЁЯУК Summary Table:
Element | Description |
---|---|
Type | Classification |
Input | Continuous (Features) |
Output | Probability (0 to 1) |
Activation | Sigmoid |
Loss Function | Binary Cross Entropy (BCELoss) |
PyTorch Layer | nn.Linear() + torch.sigmoid() |
Logistic Regression with Visualization (AND Gate)
import torch
import torch.nn as nn
import matplotlib.pyplot as plt
import numpy as np
# Dummy data (AND gate)
X = torch.tensor([[0.,0.],[0.,1.],[1.,0.],[1.,1.]], dtype=torch.float32)
y = torch.tensor([[0.],[0.],[0.],[1.]], dtype=torch.float32)
# Logistic Regression Model
class LogisticRegression(nn.Module):
def __init__(self):
super().__init__()
self.linear = nn.Linear(2, 1)
def forward(self, x):
return torch.sigmoid(self.linear(x))
model = LogisticRegression()
criterion = nn.BCELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.1)
# Training
for epoch in range(1000):
y_pred = model(X)
loss = criterion(y_pred, y)
optimizer.zero_grad()
loss.backward()
optimizer.step()
if epoch % 100 == 0:
print(f"Epoch {epoch}, Loss: {loss.item():.4f}")
# Prediction test
with torch.no_grad():
test_input = torch.tensor([[1., 1.]])
pred = model(test_input)
print("Prediction for [1, 1]:", pred.item())
# тЬЕ Visualization Code Starts Here
# Convert to numpy for plotting
X_np = X.numpy()
y_np = y.numpy()
# Create a mesh grid
xx, yy = np.meshgrid(np.linspace(-0.2, 1.2, 100), np.linspace(-0.2, 1.2, 100))
grid = torch.tensor(np.c_[xx.ravel(), yy.ravel()], dtype=torch.float32)
with torch.no_grad():
probs = model(grid).reshape(xx.shape)
# Plot decision boundary
plt.figure(figsize=(6,5))
plt.contourf(xx, yy, probs, levels=[0, 0.5, 1], alpha=0.4, colors=['lightblue','lightgreen'])
plt.scatter(X_np[:,0], X_np[:,1], c=y_np[:,0], cmap='bwr', edgecolor='k', s=100)
plt.title("Logistic Regression - Decision Boundary (AND Gate)")
plt.xlabel("Input 1")
plt.ylabel("Input 2")
plt.colorbar(label='Predicted Probability')
plt.grid(True)
plt.show()
Output:

ЁЯУЭ Practice Questions:
- Logistic Regression рдХреЛ Classification рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?
- Sigmoid Function рдХрд╛ role рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?
- Linear Regression рдФрд░ Logistic Regression рдореЗрдВ рдХреНрдпрд╛ рдореБрдЦреНрдп рдЕрдВрддрд░ рд╣реИ?
- Binary Cross Entropy Loss рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?
- PyTorch рдореЗрдВ
model.parameters()
рдХрд╛ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рд╣реИ?