Я провел некоторое исследование об этой ошибке.Я нашел что-то в Scipy оптимизировать fmin ValueError: установка элемента массива с последовательностью
У меня та же проблема.Я пытаюсь return J[0,0],grad
или return J[0],grad
, но ни одна из альтернатив не работает.Любая подсказка?
PS: Я новичок в Python и scipy.
заранее спасибо
def funcaoCustoRegressaoLogisticaReg(theta, X, y, lamb=0.01, returnGrad=True):
m = len(y)
n=len(theta)
J = 0
grad = np.zeros(theta.shape)
h_theta=sigmoid(np.dot(X,theta))
# calcula somatório ao quadrado de theta - primeiro termo
reg = (lamb/(2*m))*(np.dot(theta.T,theta)-np.power(theta[0],2))
p1 = np.dot(-y.T,(np.log(h_theta)))
p2 = np.dot( -(1-y).T, (np.log(1-h_theta ) ))
J = (1.0/m)*(p1+p2) +reg
mk = np.ones(theta.shape);
mk[0] = 0;
# CALCULO DO GRADIENTE
reg_grad=(lamb/m)*(theta*mk) # primeiro elemento não é regularizado
reg_grad=reg_grad.reshape((n,1))
grad = (1/m)*(np.dot((h_theta - y).T,X)).T +reg_grad
if (returnGrad==True):
return J,grad
return J
from scipy.optimize import fmin
from scipy.optimize import fmin_bfgs
parametros=(X_map, y, 1)
theta = fmin(funcaoCustoRegressaoLogisticaReg, x0=initial_theta,
args=parametros)
Я получаю следующее сообщение об ошибке:
ValueError Traceback (most recent call last) <ipython-input-167-536f4f074fed> in <module>() 6 7 parametros=(X_map, y, 1) ----> 8 theta = fmin(funcaoCustoRegressaoLogisticaReg, x0=initial_theta, args=parametros) ... 531 for k in range(N + 1): --> 532 fsim[k] = func(sim[k]) 533 534 ind = numpy.argsort(fsim)
ValueError: setting an array element with a sequence
Кстати, я получаю то же сообщение из сообщения Scipy optimize fminValueError: установка элемента массива с последовательностью и оттуда были взяты решения J[0][0]
и J[0]
!