diff --git a/src/numerical/optimization.py b/src/numerical/optimization.py index 0dd9f36..5753587 100644 --- a/src/numerical/optimization.py +++ b/src/numerical/optimization.py @@ -7,16 +7,8 @@ def gradient_descent( m, n = X.shape weights = np.zeros(n) for _ in range(iterations): - predictions = np.zeros(m) - for i in range(m): - for j in range(n): - predictions[i] += X[i, j] * weights[j] + predictions = X.dot(weights) errors = predictions - y - gradient = np.zeros(n) - for j in range(n): - for i in range(m): - gradient[j] += errors[i] * X[i, j] - gradient[j] /= m - for j in range(n): - weights[j] -= learning_rate * gradient[j] + gradient = X.T.dot(errors) / m + weights -= learning_rate * gradient return weights