Проблема с индексом при запуске fmin_l_bfgs - PullRequest
1 голос
/ 08 мая 2020

Я пытаюсь использовать функцию fmin_l_bfgs в python, чтобы максимизировать функцию логарифмического правдоподобия ниже:

def loglik(x0):
    p = np.zeros((NCS,1)) #vector to hold the probabilities for each observation
    data['v'] = (data.iloc[:, [3,4]]).dot(x0) #calculate determinstic utility
    for i in range(NCS):
        vv = data.v[(data.idcase == i + 1)] 
        vy = data.v[(data.idcase == i + 1) & (data.depvar == 1)]
        p[i][0] = np.maximum(np.exp(vy)/ sum(np.exp(vv)),0.00000001)
    #print("p", p)
    ll = -sum(np.log(p)) #Negative since neg of ll is minimized
    return ll

Используемые входные данные:

data = pd.read_csv("drive/My Drive/example_data.csv") #read data
data.iloc[:, [3,4]] = data.iloc[:, [3,4]]/100 #scale costs
B = np.zeros((1,2)) #give starting values of beta; 1xK vector; 2alternatives so 1x2 vector
NCS = data['idcase'].nunique() # number of choice situations in the dataset
x0 = B.T

оценка

optim2 = fmin_l_bfgs_b(loglik, x0, fprime=None, args=(), approx_grad=0, bounds=None, m=10, factr=10000000.0, pgtol=1e-05, epsilon=1e-08,iprint=0, maxfun=15000, maxiter=15000, disp=None, callback=None)

Однако я продолжаю получать это:

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-77-2821f2269a8c> in <module>()
     83 print('which is the same as maximizing the log-likelihood.')
     84 
---> 85 optim2 = fmin_l_bfgs_b(loglik, x0, fprime=None, args=(), approx_grad=0, bounds=None, m=10, factr=10000000.0, pgtol=1e-05, epsilon=1e-08, iprint=0, maxfun=15000, maxiter=15000, disp=None, callback=None)
     86 
     87 print(optim2)

4 frames
/usr/local/lib/python3.6/dist-packages/scipy/optimize/optimize.py in __call__(self, x, *args)
     64         self.x = numpy.asarray(x).copy()
     65         fg = self.fun(x, *args)
---> 66         self.jac = fg[1]
     67         return fg[0]
     68 

IndexError: index 1 is out of bounds for axis 0 with size 1#

Может ли кто-нибудь посоветовать мне, что делать? Я новичок в использовании методов численной оптимизации. Спасибо

...