diff --git a/machine_learning/ridge_regression/model.py b/machine_learning/ridge_regression/model.py index 03f51ce1c..3a41ff60a 100644 --- a/machine_learning/ridge_regression/model.py +++ b/machine_learning/ridge_regression/model.py @@ -20,11 +20,13 @@ class RidgeRegression: X_scaled = (X - mean) / std return X_scaled, mean, std + 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 + for i in range(self.num_iterations): predictions = X_scaled.dot(self.theta) error = predictions - y @@ -35,12 +37,14 @@ class RidgeRegression: ) / m self.theta -= self.alpha * gradient # updating weights + 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:np.ndarray, y:np.ndarray) -> float: - X_scaled, _, _ = self.feature_scaling(X) + X_scaled, _, _ = self.feature_scaling(X) m = len(y) predictions = X_scaled.dot(self.theta) @@ -49,6 +53,7 @@ class RidgeRegression: ) * np.sum(self.theta**2) return cost + def mean_absolute_error(self, y_true:np.ndarray, y_pred:np.ndarray) -> float: return np.mean(np.abs(y_true - y_pred))