Возникли проблемы при реализации векторизованной + регуляризованной версии логистического регрессионного градиентного спуска - PullRequest
0 голосов
/ 05 июля 2019

Итак, формула выглядит так enter image description here

И моя реализация выглядит так

grad[0] = ((utils.sigmoid(X.dot(theta))-y).dot(X[:,0])).sum()
grad[1:] = ((utils.sigmoid(X.dot(theta))-y).dot(X[:,1:])).sum()
grad[1:] = grad[1:] + (lambda_*theta[1:])
grad = grad/m

Однако значения, которые я получаю, немного не соответствуют (за исключением, конечно, градуса [0]) ..

enter image description here

Где я ошибся в своем коде?

1 Ответ

0 голосов
/ 06 июля 2019

Разобрался, я идиот, хаха.Вторая сумма (в строке 2) не должна быть там, так как это 2 столбца, которые должны быть добавлены.

Также немного очищен код, но это правильный способ сделать это

h = utils.sigmoid(X.dot(theta))
grad[0] = (1/m)*((h-y).dot(X[:,0])).sum()
grad[1:] = (1/m)*((h-y).dot(X[:,1:])) + ((lambda_/m)*theta[1:])
...