Как написать вектор градиента для регрессии логистики c? - PullRequest
0 голосов
/ 17 апреля 2020

Я пишу функцию, которая выдает стоимость и градиенты в качестве выходных данных, когда входными данными являются матрица признаков (X), метки ответа (y) и вектор параметров (тета). Я пишу векторизованную форму вместо использования циклов. В последней строке функции я собираюсь получить все градиенты в одном векторе (град), выполнив показанную матричную операцию. Однако в этой строке я получаю синтаксическую ошибку. Как преодолеть эту проблему? Код указан ниже:

def sigmoid(X):
   return 1/(1+np.exp(-X))

def costFunction(theta, X, y):

    #J=0
    m = y.size
    #grad = np.zeros(theta.shape)

    z = sigmoid(np.dot(X,theta))

    J = (1/m)*(-(np.dot(y.T,np.log(z)))-(np.dot((np.ones(m)-y).T,np.log(np.ones(m)-z)))  #cost funct

    grad = (np.dot(X.T,z-y))   #problematic line of code

    return J, grad
...