首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EM algo使用pykalman返回不同的答案。

EM algo使用pykalman返回不同的答案。
EN

Stack Overflow用户
提问于 2017-12-21 10:50:59
回答 1查看 335关注 0票数 0

我在Python 3.6.3中使用Python 3.6.3时遇到了一个问题

参考下面的代码,为什么来自kf2kf3的结果是不同的,而来自kf1kf3的结果是相同的呢?

kf2kf3的不同之处在于,我只是将迭代分解为运行kf2函数的2倍。

谢谢大家的调查。

代码语言:javascript
复制
>>>pri_mean[:10]
array([ 2827.2222,  2829.6   ,  2831.    ,  2832.1   ,  2833.1   ,  2835.3   ,  2833.9   ,
        2833.8   ,  2833.6   ,  2833.    ])

>>>kf1 = KalmanFilter()
>>>kf1 = kf1.em(pri_mean, 10, em_vars='all')
>>>print(kf1.transition_matrices, kf1.transition_offsets, kf1.transition_covariance)
[[ 0.99741876]] [ 10.04426882] [[ 2896.92752373]]
>>>kf2 = kf1.em(pri_mean, 10, em_vars='all')
>>>print(kf2.transition_matrices, kf2.transition_offsets, kf2.transition_covariance)
[[ 0.99364606]] [ 20.02260806] [[ 2600.94151188]]

>>>kf3 = KalmanFilter()
>>>kf3 = kf3.em(pri_mean, 20, em_vars='all')
>>>print(kf3.transition_matrices, kf3.transition_offsets, kf3.transition_covariance)
[[ 0.99741876]] [ 10.04426882] [[ 2896.92752373]]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-21 11:13:54

我编辑了答案,因为我误解了这个问题。我认为问题在于您缺少关键字n_iter

请参阅以下代码:

代码语言:javascript
复制
kf1 = KalmanFilter()
kf1 = kf1.em(pri_mean, n_iter=10, em_vars='all')
print(kf1.transition_matrices, kf1.transition_offsets, kf1.transition_covariance)
kf1 = kf1.em(pri_mean, n_iter=10, em_vars='all')
print(kf1.transition_matrices, kf1.transition_offsets, kf1.transition_covariance)
kf1 = KalmanFilter()
kf1 = kf1.em(pri_mean, n_iter=20, em_vars='all')
print(kf1.transition_matrices, kf1.transition_offsets, kf1.transition_covariance)

我通过KalmanFilter()创建一个过滤器,循环10个迭代并打印,然后再创建10个并打印。这相当于立即调用20个迭代的.em()

将产生以下输出

代码语言:javascript
复制
[[ 0.95500561]] [ 113.29118228] [[ 6431.66262464]]
[[ 0.93636512]] [ 119.32378005] [[ 249.67547612]]
[[ 0.93636512]] [ 119.32378005] [[ 249.67547612]]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47923351

复制
相关文章

相似问题

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