В настоящее время я пишу функцию логистической регрессии в Python 3 с использованием Numpy и Google Colab Laboratory.В то время как все остальное работает, моя функция стоимости возвращает множество различных значений.При построении графика это выглядит так: график .
theta = np.zeros((3,1)) def sigmoid(z): g = (1 / (1 + np.exp(-z))) return g def costFunction(): Hx = sigmoid(np.dot(X,theta)); mul0 = ((-y) * np.log(Hx)) mul1 = ((1 - y) * np.log(1 - (Hx))) J = (1 / m) * np.sum(mul0 - mul1) return J
X - это матрица из 3 столбцов, как и y.m - количество обучающих примеров.Полный код на https://colab.research.google.com/drive/128biX9f0LywzBKkgkIcjGGcagkZH3fAC
Функция логистических потерь для меток в {-1, 1} равна
np.log(1. + np.exp(-y * X.dot(theta)))
Ее градиент равен
X.T.dot(-y * sigmoid(- y * X.dot(w))
Для градиентного спуска обратное значение шага должно быть norm(X, ord=2) ** 2 / 2
norm(X, ord=2) ** 2 / 2