Python 运行fmin_l_bfgs时出现索引问题
我试图在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
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#