Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.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 是否可以使用实例方法作为scipy的可调用方法?_Python_Numpy_Scipy - Fatal编程技术网

Python 是否可以使用实例方法作为scipy的可调用方法?

Python 是否可以使用实例方法作为scipy的可调用方法?,python,numpy,scipy,Python,Numpy,Scipy,是否可以使用实例方法作为SciPy中的可调用函数,例如使用SciPy.optimize.minimize 我有几个状态空间模型的变体,它们是在不同的类中定义的,都是从父“KalmanFilterModel”类派生的。每个子类都定义自己的filter()实例方法(KalmanFilterModel也是,但这里没有显示) 我要做的是编写一个实例方法,通过最大似然估计模型的参数 以下是我的代码片段: class KalmanFilterModel: def estimate_parameter

是否可以使用实例方法作为SciPy中的可调用函数,例如使用SciPy.optimize.minimize

我有几个状态空间模型的变体,它们是在不同的类中定义的,都是从父“KalmanFilterModel”类派生的。每个子类都定义自己的filter()实例方法(KalmanFilterModel也是,但这里没有显示)

我要做的是编写一个实例方法,通过最大似然估计模型的参数

以下是我的代码片段:

class KalmanFilterModel:
    def estimate_parameters(self, obs, x0=None):

        self._obs = obs

        if x0 is None:
            x0 = np.array([0.5, 0.7, 1.0])

        result = minimize(fun=self._minimization, x0=x0,
                          options={'maxiter': 300})

        return result

    def _minimization(self, x):
        # Function to minimize when estimating parameters.
        self.eta = x[0]
        self.mu = x[1]
        self.inverse_beta = x[2]


        return -self.filter(self._obs)
但是,当我尝试运行它时,会出现以下错误:

TypeError: unsupported operand type(s) for /: 'set' and 'float'
在这种情况下是否可以使用实例方法,如果可以,最好的方法是什么?

In [4]: class F(object):
   ...:     def meth(self, x):
   ...:         return (x-1.)**2
   ...:     

In [5]: ff = F()

In [6]: minimize(ff.meth, 2.)
Out[6]: 
   status: 0
  success: True
     njev: 3
     nfev: 9
 hess_inv: array([[1]])
      fun: 1.3877787807814457e-17
        x: array([ 1.])
  message: 'Optimization terminated successfully.'
      jac: array([  2.23517418e-08])

它应该很好用。你可能还有别的错误。确保所有函数签名都匹配它们应该匹配的内容,并查找您试图将集合除以浮点的部分。您是对的,当我将
过滤器
函数的返回类型从dict更改为float时,我在浮点变量周围留下了
{}
,这是一个愚蠢的输入错误。