Implement batch gradient descent to learn slope and intercept for linear regression on toy data.
import numpy as np
X = np.array([1,2,3,4,5], dtype=float)
y = np.array([2,4,6,8,10], dtype=float) # y = 2x
m, c = 0.0, 0.0
L = 0.01
epochs = 1000
for _ in range(epochs):
y_pred = m*X + c
D_m = (-2/len(X)) * np.sum(X * (y - y_pred))
D_c = (-2/len(X)) * np.sum(y - y_pred)
m -= L * D_m
c -= L * D_c
print("Slope (m):", round(m, 4), "Intercept (c):", round(c, 4))
Slope (m): 2.0 Intercept (c): 0.0