1
是否有可能在SciPy中使用實例方法作爲可調用函數,例如scipy.optimize.minimize?是否可以使用實例方法作爲scipy的可調用對象?
我有幾個變體的狀態空間模型定義在不同的類中,都是從父類「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'
是否有可能在所有使用這種情況下的實例方法,如果是這樣的話,最好的方法是什麼?
它應該工作得很好。你可能有一些其他的錯誤。確保所有函數簽名匹配他們應該的內容,然後查找您想要用浮點數分隔集合的部分。 – user2357112
你說得對,當我將'filter'函數的返回類型從dict改爲float時,我的部分是一個愚蠢的錯字我離開了'{}'圍繞着float變量。 – vgregoire