pandas 数据帧的样条插值顺序

Order of spline interpolation for pandas dataframe

我有以下数据框,它显示来自运动捕捉的数据,其中每一列都是一个标记(即位置数据),行是时间:

        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 值需要填充。我不是这方面的专家,所以我不确定填充这些内容的最佳方法是什么。

我知道我可以做 forward/backward 填充,我还阅读了样条插值,这似乎更复杂。在 pandas.DataFrame.interpolate 的文档中指出,对于样条曲线,您必须指定顺序。

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

样条的顺序与数据集中的特征数量无关。每个特征将相互独立插值。因此,在应用算法之前,了解其工作原理及其每个参数(例如 'order')的作用非常重要。

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

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

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

资料来源:Google

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


你应该使用哪个?

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

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

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

你会发现这个方法的实现很粗略here