diff --git a/02 Linear Regression/LinearRegression.py b/02 Linear Regression/LinearRegression.py index 8b8edba..11c52da 100644 --- a/02 Linear Regression/LinearRegression.py +++ b/02 Linear Regression/LinearRegression.py @@ -8,12 +8,19 @@ def __init__(self, lr = 0.001, n_iters=1000): self.n_iters = n_iters self.weights = None self.bias = None - + self.mean = None + self.std = None + + def _standardize(self, X): + return (X - self.mean) / self.std def fit(self, X, y): n_samples, n_features = X.shape self.weights = np.zeros(n_features) self.bias = 0 - + self.mean = np.mean(X, axis=0) + self.std = np.std(X, axis=0) + X = self._standardize(X) + for _ in range(self.n_iters): y_pred = np.dot(X, self.weights) + self.bias @@ -24,5 +31,6 @@ def fit(self, X, y): self.bias = self.bias - self.lr * db def predict(self, X): + X = self._standardize(X) y_pred = np.dot(X, self.weights) + self.bias return y_pred diff --git a/03 Logistic Regression/LogisticRegression.py b/03 Logistic Regression/LogisticRegression.py index 8179d65..0536908 100644 --- a/03 Logistic Regression/LogisticRegression.py +++ b/03 Logistic Regression/LogisticRegression.py @@ -10,12 +10,19 @@ def __init__(self, lr=0.001, n_iters=1000): self.n_iters = n_iters self.weights = None self.bias = None - + self.mean = None + self.std = None + + def _standardize(self, X): + return (X - self.mean) / self.std def fit(self, X, y): n_samples, n_features = X.shape self.weights = np.zeros(n_features) self.bias = 0 - + self.mean = np.mean(X, axis=0) + self.std = np.std(X, axis=0) + X = self._standardize(X) + for _ in range(self.n_iters): linear_pred = np.dot(X, self.weights) + self.bias predictions = sigmoid(linear_pred) @@ -28,6 +35,7 @@ def fit(self, X, y): def predict(self, X): + X = self._standardize(X) linear_pred = np.dot(X, self.weights) + self.bias y_pred = sigmoid(linear_pred) class_pred = [0 if y<=0.5 else 1 for y in y_pred]