From 4d4e7fd15396371923354882e7bde510237f9ec5 Mon Sep 17 00:00:00 2001 From: Osamsami <145556347+Osamsami@users.noreply.github.com> Date: Wed, 1 Apr 2026 14:51:03 -0800 Subject: [PATCH] feat: add multiple linear regression implementation closes #2691 --- .../medium/multiple_linear_regression.py | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 exercises/1000_programs/medium/multiple_linear_regression.py diff --git a/exercises/1000_programs/medium/multiple_linear_regression.py b/exercises/1000_programs/medium/multiple_linear_regression.py new file mode 100644 index 0000000..8bf68ec --- /dev/null +++ b/exercises/1000_programs/medium/multiple_linear_regression.py @@ -0,0 +1,31 @@ +import numpy as np + +def multiple_linear_regression(X, y, lr=0.01, epochs=1000): + """ + Implements Multiple Linear Regression using Vectorized Operations. + X: Matrix of features (samples, features) + y: Target values + """ + # Adding a column of ones for the intercept (bias term) + X = np.c_[np.ones(X.shape[0]), X] + + # Initializing weights with zeros + weights = np.zeros(X.shape[1]) + n = len(y) + + for _ in range(epochs): + # Predicting values + y_pred = np.dot(X, weights) + + # Calculating Gradients + error = y_pred - y + gradient = (2/n) * np.dot(X.T, error) + + # Updating weights (Gradient Descent) + weights -= lr * gradient + + return weights + +# Example Use: Predicting house price based on (Area, Rooms) +# X = np.array([[1500, 3], [2000, 4], [1200, 2]]) +# y = np.array([300000, 400000, 240000]) \ No newline at end of file