是否可以在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'在这种情况下,可以使用实例方法吗?如果可以,那么最好的方法是什么?
发布于 2014-03-14 09:48:21
是。
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])https://stackoverflow.com/questions/22396274
复制相似问题