Я внедряю курс машинного обучения Эндрю Нг в Python. В упражнении по программированию 2 на первый вопрос я получаю ответы на запись для функции стоимости и градиента, но когда вычисления оптимизируют тета, я получаю катастрофический ответ!
Я уже старался изо всех сил, но не смог найти ошибку
def sigmoid(x):
return 1 / (1 + np.exp(-x))
def cost_compute( theta,x, y):
J = (-1/m) * np.sum(np.multiply(Y, np.log(sigmoid(X @ theta)))
+ np.multiply((1-Y), np.log(1 - sigmoid(X @ theta))))
return J
[m, n] = X.shape
X = np.hstack( (np.ones((m,1)) , X) )
Y = Y[:, np.newaxis]
theta = np.zeros((n+1,1))
def grad( theta, X, Y):
temp = (1/m) * X.T @ (sigmoid(X @ theta) - Y)
return temp
temp = opt.fmin_tnc(func = cost_compute, x0 = theta.flatten() , fprime = grad , args = (X, Y.flatten()))
print(temp)
ожидаемая стоимость 0,693, и я ее получаю.
Ожидаемый градус также совпадает с фактическим ответом.
Но оптимизированная тэта, которую я получаю, это массив ([4.42735730e-05, 5.31690927e-03, 4.98646266e-03], что дает мне новую цену около 60! (Вместо 0,203)