私は、 numpyを使用して、Pythonでベクトル化されたロジスティック回帰を実装しようとしています。私の費用関数(CF)はうまくいくようです。しかし、勾配計算には の問題があります。 は3x1を返しますが、3x100配列を返します。私は(hypo-y)
の部分に問題があると思う。Python Numpy Logistic Regression
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入力は100X3Arrray、y入力は100X1、theta入力は3X1Arrrayです。この最適化関数はエラーを返す:optim = minimal(CF、theta、method = 'BFGS'、jac = gr、args =(X、y))エラー: "ValueError:shapes(3,100 )and(3,100)not aligned:100(dim 1)!= 3(dim 0) "ありがとうございました! – efeatikkan