Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 运行fmin_l_bfgs时出现索引问题_Python_Numerical Methods_Scipy Optimize - Fatal编程技术网

Python 运行fmin_l_bfgs时出现索引问题

Python 运行fmin_l_bfgs时出现索引问题,python,numerical-methods,scipy-optimize,Python,Numerical Methods,Scipy Optimize,我试图在python中使用fmin_l_bfgs函数来最大化下面的对数似然函数: 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): v

我试图在python中使用fmin_l_bfgs函数来最大化下面的对数似然函数:

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
估计 然而,我一直得到这样的信息:

---------------------------------------------------------------------------
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#
---------------------------------------------------------------------------
索引器回溯(最后一次最近调用)
在()
83打印('这与最大化对数可能性相同')
84
--->85 optim2=fmin_l_bfgs_b(loglik,x0,fprime=None,args=(),近似梯度=0,边界=None,m=10,factr=10000000.0,pgtol=1e-05,epsilon=1e-08,iprint=0,maxfun=15000,maxiter=15000,disp=None,callback=None)
86
87打印(optim2)
4帧
/调用中的usr/local/lib/python3.6/dist-packages/scipy/optimize/optimize.py(self,x,*args)
64 self.x=numpy.asarray(x).copy()
65 fg=自我乐趣(x,*args)
--->66 self.jac=fg[1]
67返回fg[0]
68
索引器:索引1超出大小为1的轴0的界限#
有人能告诉我该怎么办吗?我在使用数值优化方法方面是个新手。
谢谢

您是否尝试过
approw_grad=1
?您是否尝试过
approw_grad=1
---------------------------------------------------------------------------
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#