Logistic Regression example with Simple Python
1. What We’ll Simulate:
We’ll build a Logistic Regression model to predict if a student passes based on hours studied.
- Input: hours studied
- Output: 1 (pass) or 0 (fail)
- We’ll simulate a very tiny dataset for training
- We’ll use the sigmoid function to convert scores into probabilities
Step-by-Step Plan:
1.Sigmoid function
2.Simple dataset
3.Training loop using Gradient Descent
4.Prediction based on probability
Logistic Regression in Pure Python (No Libraries)
import math # Step 1: Sigmoid Function def sigmoid(z): return 1 / (1 + math.exp(-z)) # Step 2: Training Data — [Hours Studied, Passed (1/0)] data = [ [1, 0], # 1 hour, failed [2, 0], [3, 0], [4, 1], [5, 1], [6, 1] ] # Step 3: Initialize weights and bias weight = 0.0 bias = 0.0 learning_rate = 0.1 # Step 4: Training using Gradient Descent for epoch in range(1000): total_loss = 0 for x, y in data: z = weight * x + bias pred = sigmoid(z) error = pred - y # Gradients d_weight = error * x d_bias = error # Update weights weight -= learning_rate * d_weight bias -= learning_rate * d_bias # Log loss (optional) loss = - (y * math.log(pred) + (1 - y) * math.log(1 - pred)) total_loss += loss if epoch % 100 == 0: print(f"Epoch {epoch}: Loss = {total_loss:.4f}") # Step 5: Predict function def predict(hours): z = weight * hours + bias prob = sigmoid(z) return 1 if prob >= 0.5 else 0, prob # Step 6: Test prediction test_hours = 3.5 result, probability = predict(test_hours) print(f"\nPredicted: {'Pass' if result else 'Fail'} with probability {probability:.2f} for {test_hours} hours studied")
Output Sample (Will vary a bit):
Epoch 0: Loss = 4.1585
Epoch 100: Loss = 1.0204
Epoch 200: Loss = 0.6245
…
Predicted: Pass with probability 0.75 for 3.5 hours studied
What We Just Did:
- Created a tiny Logistic Regression from scratch.
- Used math to mimic how models “learn” by adjusting weights.
- Predicted probabilities and made binary decisions.
Logistic Regression – Basic Math Concepts