【问题标题】:optimize.fmin error: IndexError: too many indices for arrayoptimize.fmin 错误:IndexError:数组索引过多
【发布时间】:2020-02-06 00:54:14
【问题描述】:

我正在尝试使用 scipy 中的 optimize.fmin 优化 python 中的函数。给定初始条件和参数,该函数应优化参数向量。但是,当我尝试运行优化时,我一直收到以下错误,而运行函数本身可以工作:

IndexError: 参数化中数组第 1 行的索引过多

简而言之,我的代码是这样的:

import numpy as np # import numpy library
import pandas as pd # import pandas library
from scipy import optimize # import optimize from scipy library
from KF_GATSM import KF_GATSM # import script with Kalman filter

yields=pd.read_excel('data.xlsx',index_col=None,header=None) # Import observed yields
Omega0=pd.read_excel('parameters.xlsx') # Import initial parameters

# Function to optimize
def GATSM(Omega,yields,N):

     # recover parameters
     Omega=np.matrix(Omega)
     muQ,muP=parametrization(N,Omega) # run parametrization

Y=muQ+muP # or any other function

return Y

# Parametrization of the function
def parametrization(nstate,N,Omega):

     muQ=np.matrix([[Omega[0,0],0,0]]).T # intercept risk-neutral world
     muP=np.matrix([[Omega[1,0],Omega[2,0],Omega[3,0]]]).T # intercept physical world

     return muQ,muP

# Run optimization
def MLE(data,Omega0):

    # extract number of observations and yields maturities
    N=np.shape(yields)[1]

    # local optimization
     omega_opt=optimize.fmin(GATSM,np.array(Omega0)[:,0],args=(yields,N)) 

    return Y

【问题讨论】:

  • 你能提供yieldsOmega0的值吗?

标签: python scipy-optimize


【解决方案1】:

我解决了这个问题。似乎我无法在 Scipy 中选择如下数组的元素(尽管它在 Numpy 中有效):

Omega[0,0]
Omega[0]

诀窍是使用:

Omega.item(0)

【讨论】:

    猜你喜欢
    • 2020-09-26
    • 2019-07-17
    • 2020-09-14
    • 2018-05-23
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    相关资源
    最近更新 更多