Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数据帧的样条插值阶_Python_Pandas_Dataframe_Interpolation_Spline - Fatal编程技术网

Python 数据帧的样条插值阶

Python 数据帧的样条插值阶,python,pandas,dataframe,interpolation,spline,Python,Pandas,Dataframe,Interpolation,Spline,我有以下数据框,其中显示了运动捕捉的数据,其中每列是一个标记(即位置数据),行是时间: 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 14

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

        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值。我不是这方面的专家,所以我不确定什么是最好的方法来填补这些空白

我知道我可以做正向/反向填充,我也读过关于样条插值的书,它看起来更复杂。它的文档中指出,对于样条曲线,必须指定顺序


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

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

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

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

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

资料来源:谷歌

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


您应该使用哪一种?

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

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

  • 从数据中提取完整序列(无缺失值)
  • 随机将此数据的百分比设置为缺失(单独保留这些隐藏值)
  • 尝试多种插值方法以完成序列(使用顺序3、5、7样条曲线等)
  • 取预测序列,并使用R2_分数将其与实际序列进行比较
  • r2_分数最高的那一个应该最适合您的数据
  • 在注入的缺失数据的多个百分比上重复此步骤多次,以形成一个有效的研究,其中一个总体上优于另一个
  • 您可以发现这种方法的实现非常粗糙


    样条曲线的顺序与数据集中的特征数量无关。每个特征将相互独立插值。查看我的帖子,它解释了样条线方法的直觉,并建议您应该如何进行测试,看看哪些方法更有效。非常感谢您的回复!仅供参考,填充NAN的最佳方法是InterpolateAkima,遵循您发给我的文章中的方法。那太好了,不同的数据集将有不同的插补技术更好地适用于它们。我强烈建议您也参考KNN进行插补。