问题标签 [pykalman]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
304 浏览

python - EM 算法使用 pykalman 返回不同的答案

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

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

kf2和之间过程的区别kf3在于我只是将迭代拆分为运行 2 次函数 for kf2

感谢大家调查它。

0 投票
0 回答
1053 浏览

python - 在实时数据上使用 pykalman

我在pykalman 文档上看到的所有示例都适用于给定的数据集,我正在徘徊如何通过在考虑时间增量的同时提供单个观察结果来使用它。

从文档中:

0 投票
1 回答
1658 浏览

transition - 卡尔曼滤波器(pykalman):obs_covariance 的值和没有截距的模型

我正在查看示例中显示的 pykalman 的 KalmanFilter:

pykalman 文档

示例 1

示例 2

我想知道

文件指出

这里应该如何正确设置值?

此外,是否可以在上述模块中应用不带截距的卡尔曼滤波器?

0 投票
1 回答
3944 浏览

numpy - pykalman:(默认)处理缺失值

我正在使用 pykalman 模块中的 KalmanFilter,并且想知道它如何处理缺失的观察结果。根据文档:

在现实世界的系统中,传感器偶尔会出现故障是很常见的。卡尔曼滤波器、卡尔曼平滑器和 EM 算法都可以处理这种情况。要使用它,只需在缺少的时间步对测量应用 NumPy 掩码:

from numpy import ma X = ma.array([1,2,3]) X 1 = ma.masked # 在时间步长 1 隐藏测量 kf.em(X).smooth(X)

我们可以平滑输入时间序列。由于这是一个“附加”功能,我认为它不是自动完成的;那么在变量中包含 NaN 时的默认方法是什么?

这里解释了可能发生的理论方法;这也是 pykalman 所做的吗(在我看来这真的很棒):

交叉验证 - 如何处理卡尔曼滤波器中的不完整数据?

0 投票
0 回答
254 浏览

kalman-filter - 扩展卡尔曼滤波器(EKF):为测量和估计添加偏差

我研究 EKF 并尝试在测量中添加偏差(1 度或 1 弧秒)。我有两个测量值(角度)并找到位置(3)和速度(3)所以总状态(6)所以我想扩展滤波器和偏差估计(第 7 和第 8 状态)。这个想法是将偏差值添加到测量值并估计该值。例如,测量之一(190 度)和第二个(5 度)。如果我在测量值中添加 1 度偏差,则新值分别为 191 度和 6 度。我的模拟结果是,从 1 度开始并经过零 如果我正在估计偏差,但我期望结果将从零开始并且大约为 1 度。

我哪里错了?你能分享你的想法或为这个想法提供一些文件吗?

0 投票
2 回答
3187 浏览

python - 在 Python 中绘制具有平滑外观的时间序列的导数

我有一个像这样的长熊猫时间序列:

我想把它和它的导数一起绘制。根据定义,我以这种方式计算导数:

因为增量时间的某些值(即以面值表示)非常接近(或有时等于)零,所以我在导数中得到了一些 inf 值。实际上我得到了这个:[]。 [1]

时间序列蓝色(左刻度),导数绿色(右刻度)

现在我想平滑导数以使其更具可读性。我尝试了不同的操作,例如:

  • 计算较高时期的差异: 在此处输入图像描述

为数字和面额设置句点=5

  • 使用移动平均线:smotDeriv=derivative.rolling(window=10,min_periods=3,center=True,win_type='boxcar').mean()获得:

在此处输入图像描述

我也使用了不同的窗口类型,没有任何有用的变化

  • 我还想剪裁这些值,但我不知道将哪些有效值用作最小值和最大值。我尝试了 25% 和 75% 的分位数,但没有任何优势
  • 我还绑定了使用 pykalman 的卡尔曼滤波器:

    derivative.fillna(0,inplace=True) kf = KalmanFilter(initial_state_mean=0) state_means,_ = kf.filter(derivative.values) state_means = state_means.flatten() indexDate=derivative.index derivativeKalman=pd.Series(state_means,index=indexDate)

得到这个:

在此处输入图像描述

实际上我找不到任何有用的改进。如果可能的话,你能建议我如何提高图表上导数图的可读性。显然,我会削减导数的一些峰值以获得接近真实值的平滑曲线。我尝试了关于窗口类型、周期等的不同组合。没有任何结果。关于卡尔曼滤波器,我不是专家,假设是新手,所以我只是在this之后使用默认值。我还找到了实现卡尔曼滤波器的 filterpy 库,但我还没有找到如何在不设置启动参数的情况下使用。

0 投票
1 回答
923 浏览

python-3.x - 卡尔曼滤波器从未来预测前一步

我是卡尔曼滤波器的新手,并试图用它来预测缺失值以及从 GPS 数据(纬度和经度)中获得平滑的观察结果。

我正在使用 pykalman,我的代码块如下所示:

其中 data 是从中提取纬度和经度的熊猫数据框。

这个逻辑正确吗?另外,我想做的是采用更接近缺失观察的观察来预测缺失值。例如,如果在 10 个样本的数组中,如果缺少第 5、6 和第 7 个观测值,则使用第 4 个样本预测第 5 个、使用第 8 个样本预测第 7 个并通过取第 5 个和第 7 个的平均值来预测第 6 个更有意义.

这种方法有意义吗?如果是,如何使用 pykalman 进行操作?如果不是,在数组中没有很多连续值的情况下,如何更准确地预测缺失值?

0 投票
0 回答
729 浏览

python - 非线性系统的卡尔曼滤波器

我想在我的实验中使用卡尔曼滤波器。我已经创建了一个非常小的时间序列数据,其中包含如下格式的三列。由于我无法在 stackoverflow 上附加文件,因此在此处附加了完整的数据集以实现可重复性:

http://www.mediafire.com/file/el1tkrdun0j2dk4/testdata.csv/file

我已经阅读了文档Kalman Filter并设法进行了简单的线性过滤,这是我的代码

这给出了以下图作为输出

在此处输入图像描述

但是,由于我的输入是非线性的,Kalman Filter因此我想使用它来检测和跟踪滤波信号的下降(上图中的蓝色)。但由于我是新手Kalman Filter,我似乎很难理解数学公式并开始学习Unscented Kalman Filter。老实说,文档也不容易遵循。因此,我会感谢任何帮助,至少可以检测过滤后峰值的下降有多大(例如,前一个下降的 50%)。任何帮助,将不胜感激。

0 投票
0 回答
1106 浏览

python - 如何使用卡尔曼滤波器模型检测峰值

对于我的评估,我想使用PyKalman过滤器库。我已经创建了一个非常小的时间序列数据,其中包含如下格式的三列。由于我无法在 stackoverflow 上附加文件,因此在此处附加了完整的数据集以实现可重复性:

http://www.mediafire.com/file/el1tkrdun0j2dk4/testdata.csv/file

我已阅读Python的 PyKalman 库文档并设法使用以下方法进行简单的线性过滤Kalman Filter,这是我的代码

这给出了以下图作为输出

在此处输入图像描述

从绘图和我的数据集可以看出,我的输入是非线性的。因此,我想使用Kalman Filter并查看是否可以检测和跟踪过滤信号的下降(上图中的蓝色)。但由于我是新手Kalman Filter,我似乎很难理解数学公式并开始学习Unscented Kalman Filter我找到了一个关于PyKalman UKF基本使用的好例子——但它没有显示如何定义下降的百分比(峰值)。因此,我会感谢任何帮助,至少可以检测到过滤后峰值的下降幅度有多大(例如,图中蓝线前一次下降的 50% 或 80%)。任何帮助,将不胜感激。

0 投票
2 回答
2660 浏览

python-3.x - 我们如何在 Python 中测量 RMSE?

我正在使用Kalman Filters进行实验。我已经创建了一个非常小的时间序列数据,其中包含如下格式的三列。由于我无法在 stackoverflow 上附加文件,因此在此处附加了完整的数据集以实现可重复性:

.csv 文件

我已经阅读了文档Kalman Filter并设法进行了简单的线性预测,这是我的代码

这给出了以下图作为输出

在此处输入图像描述

正如我们在图中看到的那样,该模式似乎被很好地捕捉到了。我们如何统计测量均方根误差 (RMSE)(上图中红线和蓝线之间的误差距离)?任何帮助,将不胜感激。