我想在python中使用 numpy实现向量化逻辑回归。我的成本函数(CF)似乎工作正常。但是梯度计算有一个 问题。它返回3x100阵列,而它的 应该返回3x1。我认为(hypo-y)
部分存在问题。Python Numpy逻辑回归
def sigmoid(a):
return 1/(1+np.exp(-a))
def CF(theta,X,y):
m=len(y)
hypo=sigmoid(np.matmul(X,theta))
J=(-1./m)*((np.matmul(y.T,np.log(hypo)))+(np.matmul((1-y).T,np.log(1-hypo))))
return(J)
def gr(theta,X,y):
m=len(y)
hypo=sigmoid(np.matmul(X,theta))
grad=(1/m)*(np.matmul(X.T,(hypo-y)))
return(grad)
X
是100x3 arrray,y
是100X1和theta
是一个3×1 arrray。看来两个功能独立工作,然而,这优化功能提供了一个错误:
optim = minimize(CF, theta, method='BFGS', jac=gr, args=(X,y))
The error: "ValueError: shapes (3,100) and (3,100) not aligned: 100 (dim 1) != 3 (dim 0)"
请说明如何用示例输入调用函数。我认为这与形成的形状有很大关系。 – kazemakase
我的X输入是100X3阵列,y输入是100X1,θ输入是3X1阵列。现在看起来两个函数都单独工作,但是这个优化函数给出了一个错误:optim = minimize(CF,theta,method ='BFGS',jac = gr,args =(X,y))错误:“ValueError:shapes(3,100 )和(3,100)不对齐:100(dim 1)!= 3(dim 0)“感谢您的关注! – efeatikkan