From a84d209c083cfafa0124fd0b7cc21c83fac28116 Mon Sep 17 00:00:00 2001 From: jbsch Date: Wed, 23 Oct 2024 19:47:34 +0530 Subject: [PATCH] added ridge regression --- machine_learning/ridge_regression/model.py | 24 +++++++++++----------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/machine_learning/ridge_regression/model.py b/machine_learning/ridge_regression/model.py index de487e32e..486fe5a33 100644 --- a/machine_learning/ridge_regression/model.py +++ b/machine_learning/ridge_regression/model.py @@ -2,14 +2,14 @@ import numpy as np import pandas as pd class RidgeRegression: - def __init__(self, alpha=0.001, regularization_param=0.1, num_iterations=1000): - self.alpha = alpha - self.regularization_param = regularization_param - self.num_iterations = num_iterations - self.theta = None + def __init__(self, alpha:float=0.001, regularization_param:float=0.1, num_iterations:int=1000) -> None: + self.alpha:float = alpha + self.regularization_param:float = regularization_param + self.num_iterations:int = num_iterations + self.theta:np.ndarray = None - def feature_scaling(self, X): + def feature_scaling(self, X:np.ndarray) -> tuple[np.ndarray, np.ndarray, np.ndarray]: mean = np.mean(X, axis=0) std = np.std(X, axis=0) @@ -20,7 +20,7 @@ class RidgeRegression: return X_scaled, mean, std - def fit(self, X, y): + def fit(self, X:np.ndarray, y:np.ndarray) -> None: X_scaled, mean, std = self.feature_scaling(X) m, n = X_scaled.shape self.theta = np.zeros(n) # initializing weights to zeros @@ -34,12 +34,12 @@ class RidgeRegression: self.theta -= self.alpha * gradient # updating weights - def predict(self, X): + def predict(self, X:np.ndarray) -> np.ndarray: X_scaled, _, _ = self.feature_scaling(X) return X_scaled.dot(self.theta) - def compute_cost(self, X, y): + def compute_cost(self, X:np.ndarray, y:np.ndarray) -> float: X_scaled, _, _ = self.feature_scaling(X) m = len(y) @@ -48,7 +48,7 @@ class RidgeRegression: return cost - def mean_absolute_error(self, y_true, y_pred): + def mean_absolute_error(self, y_true:np.ndarray, y_pred:np.ndarray) -> float: return np.mean(np.abs(y_true - y_pred)) @@ -59,10 +59,10 @@ if __name__ == "__main__": y = df["ADR"].values y = (y - np.mean(y)) / np.std(y) - # Add bias term (intercept) to the feature matrix + # added bias term to the feature matrix X = np.c_[np.ones(X.shape[0]), X] - # initialize and train the Ridge Regression model + # initialize and train the ridge regression model model = RidgeRegression(alpha=0.01, regularization_param=0.1, num_iterations=1000) model.fit(X, y)