熊猫数据帧的样条插值顺序

问题描述

我有以下数据框,其中显示了来自Motion Capture的数据,其中每一列都是标记(即位置数据),行是时间:

        LTHMB X RTHMB X
0       932.109 872.921
1       934.605 873.798
2       932.383 873.998
3       940.946 875.609
4       941.549 875.875
...     ...     ...
14765   NaN 602.700
14766   562.350 NaN
14767   562.394 NaN
14768   562.421 NaN
14769   562.490 602.705

在数据中,我需要填写一些NaN值。我并不是真正的专家,所以我不确定什么是最好的填充方式。

我知道我可以进行向前/向后填充,并且我还阅读了有关样条插值的知识,这似乎更为复杂。在pandas.DataFrame.interpolate的文档中,它指出了样条曲线必须指定顺序。

在这种情况下,我要为订单使用什么?每个标记都有一个X,Y和Z。这是否意味着我将使用三次样条,还是不是那么简单?

解决方法

样条曲线的顺序与数据集中的要素数量无关。每个要素将相互独立地插值。因此,在应用算法之前,重要的是要了解其工作原理以及其每个参数(例如“顺序”)的作用。

直觉上,三次(阶数= 3)样条线是构造样条线的过程,该样条线由三阶“分段”多项式组成。

enter image description here

请注意,所有多项式仅在一个时间间隔内有效;它们组成了插值功能。虽然外推法预测的是数据范围之外的发展,但内插法仅在数据边界内起作用。

样条曲线的“阶”就是这些“分段”多项式的阶。

enter image description here 来源:Google

如您所见,线性样条曲线(order = 1)适合范围之间的一阶多项式(直线ines),而7阶样条曲线适合7阶多项式。


您应该使用哪个?

没有人能简单地告诉您哪个更合适。您将必须对其进行可视化,以查看特定的插值技术是否能够为您提供相关的估算。

唯一可以确保您使用正确插值技术的方法是将它们与R2_score进行比较。您可以执行以下操作-

  1. 从数据中获取完整序列(无缺失值)
  2. 随意设置此数据丢失的百分比(分别保留这些隐藏值)
  3. 尝试多种插值方法以完成序列(使用3、5、7个样条线等)
  4. 获取预测序列,并使用R2_score将其与实际序列进行比较。
  5. r2_score最高的那个应该是最适合您数据的那个
  6. 在多次注入的丢失数据中以%的百分比重复多次,以形成一项有效的研究,总体上,一项研究优于另一项研究。

您会发现这种方法粗略地实现了here

enter image description here