Skip to content

fix: move super().__init__() before self.regularization in LinearRegression#131

Open
Satyam-madeit wants to merge 1 commit into
eriklindernoren:masterfrom
Satyam-madeit:fix/linearregression-init-order
Open

fix: move super().__init__() before self.regularization in LinearRegression#131
Satyam-madeit wants to merge 1 commit into
eriklindernoren:masterfrom
Satyam-madeit:fix/linearregression-init-order

Conversation

@Satyam-madeit
Copy link
Copy Markdown

Problem

In the __init__ method of LinearRegression, super().__init__() was being called
after self.regularization was set. The parent class __init__ was overwriting
self.regularization back to None, causing LinearRegression.fit(X, y) to raise:

ValueError: Self.regularization must be assigned

Solution

Moved super().__init__() to the top of __init__, before setting
self.regularization. This ensures the parent class initializes first and
doesn't overwrite the child class attributes.

Before

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

After

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

Closes #123

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Regression

1 participant