我想在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