Ошибка поиска строки optimize.minimize. Машинное обучение Эндрю Нг в Python
В упражнении5
я сделал LinearRegCostFunction
,
Но optimize.minimize
поиск строки не удался.
Я поставил некоторые строки кода только актуальные.
data = loadmat('ex5data1.mat')
X, y = data['X'],data['y']
m = y.size
def linearRegCostFunction(X,y,theta,lambda_=0.0):
m = y.size
J = 0
theta=theta.reshape((2,1))
grad = np.zeros(theta.shape)
X = np.concatenate([np.ones(X.shape),X],axis=1)
prediction = X.dot(theta)
temp = theta
temp[0] = 0
J = 1.0/(2.0*m)*(np.sum((prediction-y)**2))+lambda_/(2.0*m)*(np.sum(temp**2))
grad = 1.0/m*X.T.dot(prediction-y)+lambda_/m*temp
return J, grad
itheta = np.zeros((2,1)) #I also tried np.array([0, 0])
costgradF = lambda t: linearRegCostFunction(X,y,t,lambda_)
lambda_=0
res = optimize.minimize(costgradF,itheta,jac=True,method='tnc',options={'maxiter':100})
res
В результате
fun: 26.62891562770855
jac: array([[-12.57079675],
[-19.76251528]])
message: 'Linear search failed'
nfev: 363
nit: 12
status: 4
success: False
x: array([0., 0.26609518])
Я не понимаю, почему линейный поиск не удался.
причина J
а также grad
верните правильно, и все это похоже на другие успешные коды.