Ошибка оптимизации строки.Машинное обучение Эндрю Нг в Python - PullRequest
0 голосов
/ 09 мая 2019

В упражнении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 возвращаются правильно, и все это похоже на другие успешные коды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...