逻辑回归正则化梯度下降函数

img


请问这个梯度下降函数有什么问题吗?在使用逻辑回归方法时候写的
用这个函数算不出想要的代价函数的值
随着迭代次数的增加,一直都是下降的,最后还变成了-90多
自己看不出什么问题

你看一下我当时看吴恩达视频手写的一个梯度下降https://blog.csdn.net/qq_34229228/article/details/89190190

// An highlighted block
def g(z):
    h = 1./(1+np.exp(-z))
    return h
"""加上正则化的代价函数及其偏导数"""
def lrCostFunction(X, Y, theta, lmda):
    m = X.shape[0] # 5000
    n = X.shape[1] # 401
    # fmin输出的theta是(n,)要正确运算,需reshpe 成(n,1                )
    theta = theta.reshape(n, 1)
    h = g(X.dot(theta))
    Y = Y.reshape(m,1)

    # 代价函数
    J = (-Y.T.dot(np.log(h))-(1-Y).T.dot(np.log(1-h)))/m+(theta.T.dot(theta))*lmda/2/m
    # J = (-Y*np.log(h)-(1-Y)*np.log(1-h)).mean()+(theta.T.dot(theta))*lmda/2/m
    # 代价函数的导数
    J_d = X.T.dot(h-Y)/m
    J_d[0]=J_d[0]
    J_d[1:] = J_d[1:] + (lmda * theta[1:]) / m
    # 由于fmin 输入的函数必得是(n,)的形式,故需要将J_dreshape成(n,)的形式
    J_d = J_d.reshape(J_d.size)
    return J, J_d

你这个乍一看还有点找不出来,那个@符号我都没用过