Oam*_*Oam 2 python interpolation spline dataframe pandas
我有以下数据帧,显示来自运动捕捉的数据,其中每列是一个标记(即位置数据),行是时间:
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
Run Code Online (Sandbox Code Playgroud)
在数据中,有一些我需要填充的 NaN 值。我并不是这方面的专家,所以我不确定填充这些内容的最佳方法是什么。
我知道我可以进行向前/向后填充,而且我还阅读了有关样条插值的内容,这似乎更复杂。在pandas.DataFrame.interpolate的文档中,它指出对于样条曲线,您必须指定顺序。
在这种情况下,我将使用什么订单?每个标记都有一个 X、Y 和 Z。这是否意味着我会使用三次样条线,还是不是那么简单?
样条的顺序与数据集中的特征数量无关。每个特征将彼此独立地进行插值。因此,在应用算法之前,了解其工作原理及其每个参数(例如“顺序”)的作用非常重要。
直观上来说,三次(阶数 = 3)样条曲线是构造由三阶“分段”多项式组成的样条曲线的过程。
请注意,所有多项式仅在一个区间内有效;它们组成了插值函数。外推法预测数据范围之外的发展,而插值法仅在数据边界内起作用。
样条的“阶”是这些“分段”多项式的阶。
正如您所看到的,线性样条曲线(阶数=1)适合范围之间的一阶多项式(直线),而七阶样条曲线适合七阶多项式。
你应该使用哪个?
没有人可以简单地告诉您哪一个更适合。您必须将其可视化,看看特定的插值技术是否能够为您提供相关的插补。
保证使用正确插值技术的唯一方法是将它们与 R2_score 进行比较。您可以执行以下操作 -
您可以在这里找到此方法的大致实现方式