首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以使用实例方法作为可调用的for?

是否可以使用实例方法作为可调用的for?
EN

Stack Overflow用户
提问于 2014-03-14 04:41:43
回答 1查看 186关注 0票数 1

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

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

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

下面是我的代码片段:

代码语言:javascript
复制
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)

但是,当我试图运行它时,我会得到以下错误:

代码语言:javascript
复制
TypeError: unsupported operand type(s) for /: 'set' and 'float'

在这种情况下,可以使用实例方法吗?如果可以,那么最好的方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-14 09:48:21

是。

代码语言:javascript
复制
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])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22396274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档