Skip to content

Commit ca38a82

Browse files
Merge pull request #2690 from Osamsami/feature/linear-regression-scratch
feat: add linear regression from scratch closes #2689
2 parents e76c0c5 + be3b4df commit ca38a82

1 file changed

Lines changed: 25 additions & 0 deletions

File tree

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
def linear_regression(x_values, y_values, learning_rate=0.01, epochs=1000):
2+
"""
3+
Implements Simple Linear Regression using Gradient Descent.
4+
This is the foundation of Supervised Learning.
5+
"""
6+
# Initializing weight (m) and bias (b)
7+
m, b = 0.0, 0.0
8+
n = len(x_values)
9+
10+
for _ in range(epochs):
11+
# Calculating predictions
12+
y_pred = [m * x + b for x in x_values]
13+
14+
# Calculating Gradients
15+
dm = (-2/n) * sum(x * (y - yp) for x, y, yp in zip(x_values, y_values, y_pred))
16+
db = (-2/n) * sum(y - yp for y, yp in zip(y_values, y_pred))
17+
18+
# Updating parameters (Gradient Descent)
19+
m -= learning_rate * dm
20+
b -= learning_rate * db
21+
22+
return m, b
23+
24+
# Simple Test Case
25+
# x = [1, 2, 3], y = [2, 4, 6] -> Expected m=2, b=0

0 commit comments

Comments
 (0)