我目前正在使用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
答案 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