Regression

Author: Val11011Created Nov 10, 2025Updated Mar 30, 2026

In the init method of LinearRegression

python
def __init__(self, n_iterations=100, learning_rate=0.001, gradient_descent=True):
        self.gradient_descent = gradient_descent
        # No regularization
        self.regularization = lambda x: 0
        self.regularization.grad = lambda x: 0
        super(LinearRegression, self).__init__(n_iterations=n_iterations,
                                            learning_rate=learning_rate)

It calls super.init after setting self.regularization. And the super.init will simply set self.regularization back to None When fitting, the self.regularization will be used as a class

python
mse = np.mean(0.5 * (y - y_pred)**2 + self.regularization(self.w))
grad_w = -(y - y_pred).dot(X) + self.regularization.grad(self.w)

LinearRegression.fit(X, y) will raise

ValueError: Self.regularization must be assigned

Source: eriklindernoren/ML-From-Scratch