это моя функция
def linearRegCostFunction(X,y,theta,lamda):
[m,n] = X.shape
#hypothesis
h_theta = X*theta
#CostFunction
J = 1/(2*m)*((h_theta-y).transpose())*(h_theta - y)
JReg = (lamda/(2*m)) * (theta[1:,:].transpose()) * theta[1:,:]
CostFun = J + JReg
#GradientDescent
thetaZero = theta
thetaZero[0] = 0
G = (1/m) * ((h_theta-y).transpose()) * X
JGrad = lamda/m * thetaZero.transpose()
gradientDescent = G + JGrad
return(CostFun,gradientDescent)
я звоню с этим: linearRegCostFunction(biasX,y,theta,lamda)
тогда я получаю: (matrix([[303.99319222]]), matrix([[-15.30301567, 598.25074417]]))
когда я пытаюсь вспомнить:
[C,G] = linearRegCostFunction(biasX,y,theta,lamda)
print('CostFunction\n',C)
print('GradientDescent\n',G)
тогда я получаю разные значения:
CostFunction[[319.79620789]]
GradientDescent[[-16.30301567 603.33617052]]
Я подумал, потому что не было определено, что CostFunction и GradientDescent равны нулю в первой строке функции. как я могу определить в моей функции?