Я пытался реализовать решения упражнений Эндрю Нга в python и не уверен, почему я не могу заставить работать градиентный спуск должным образом. Это код, который я использовал для градиентного спуска:
def gradientDescent(x, y, theta, alpha, num_iter):
m=np.size(x,axis=0)
for i in range(num_iter):
hyp=np.dot(x,theta)
theta = theta - (alpha / m) * np.dot(x.T,(np.dot(X, theta) - y))
return theta
theta=gradientDescent(X, y, [[0],[0]], 0.01, 1500)
Это тета согласно этому коду: array([[0.05839135],[0.6532885 ]])
Необходимые значения: array([[-3.6303],[[1.1664]])
И модель выглядит так: plot
Вот код, который я следовал, который использует октаву:
function [theta, J_history] = gradientDescent(X, y, theta, alpha, num_iters)
m = length(y); % number of training examples
J_history = zeros(num_iters, 1);
for iter = 1:num_iters
theta=theta-alpha*(1/m)*X'*(X*theta-y)
J_history(iter) = computeCost(X, y, theta)
end
end
Также, чтобы найти параметры, которые я пытался использовать метод нормального уравнения, и он дал точный результат, что означает, что остальная часть кода в порядке.