In the init method of LinearRegression
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
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
In the init method of LinearRegression
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
LinearRegression.fit(X, y) will raise