Logistic回归成本函数返回不一致的值

时间:2018-11-21 19:10:00

标签: python numpy machine-learning regression logistic-regression

我目前正在使用numpy和google colaboratory在python 3中编写逻辑回归函数。当其他所有方法都起作用时,我的成本函数将返回各种不同的值。绘制时看起来像这样 graph

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和y一样是3列矩阵。 m是训练示例的数量。完整代码位于https://colab.research.google.com/drive/128biX9f0LywzBKkgkIcjGGcagkZH3fAC

1 个答案:

答案 0 :(得分:0)

{-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