У Сципи сворачивается проблема с формами, даже когда они правильные - PullRequest
0 голосов
/ 25 января 2019

Я реализую классический алгоритм логистической регрессии на python и пытаюсь оптимизировать функцию стоимости с помощью optimize.minimize, но получаю ошибку, связанную с формами. Тем не менее, я полностью уверен, что размеры правильные. Вот мой код

import numpy as np
from scipy import optimize

def sig(z):
    return 1/(1+np.exp(-z))

def h(X,theta):
    return sig(np.dot(X,theta))

def cost(X,y,theta):
    return -np.dot(np.log(h(X,theta)).T,y)-np.dot(1-np.log(h(X,theta)).T,1-y)

def grad(X,y,theta):
    return np.dot(X.T,h(X,theta)-y)

X=np.ones((10,3))
theta=np.zeros(X.shape[1])
y=np.ones(10)

opt=optimize.minimize(cost,theta,jac=grad,args=(X,y),method='CG')

И я получаю эту ошибку

   File "C:/Users/Neso/.spyder-py3/temp.py", line 8, in h
    return sig(np.dot(X,theta))

  ValueError: shapes (3,) and (10,) not aligned: 3 (dim 0) != 10 (dim 0)

Но X - это (10,3), а theta - (3,0), поэтому проблем с np.dot(X,theta) не должно быть. Я даже могу назвать все методы без проблем. Я слышал, что optimize.minimize очень чувствителен, когда входными данными являются матрицы и векторы, но я не знаю, что делать в этом случае. Какие-либо предложения? Спасибо `

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