请问这个梯度下降函数有什么问题吗?在使用逻辑回归方法时候写的
用这个函数算不出想要的代价函数的值
随着迭代次数的增加,一直都是下降的,最后还变成了-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
你这个乍一看还有点找不出来,那个@符号我都没用过