三次样条插值的右侧不正常抖动问题

详解三次样条插值的文章,收获很大。但是最后的代码好像有一些问题。最后当数据个数过多时会出现不正常的抖动。请问如何避免这种情况的发生呢?

三次样条插值(Cubic Spline Interpolation)是一种常用的数值插值方法,用于将一组离散的数据点拟合成平滑的曲线。在实际应用中,可能会遇到数据个数过多时出现抖动的问题。为了避免这种情况,可以采用以下方法:

  1. 数据预处理:对原始数据进行归一化处理,使其具有相似的尺度。这有助于减少插值过程中的振荡。
  2. 选择合适的插值算法:考虑使用其他插值算法,如拉格朗日插值(Lagrange Interpolation)或牛顿插值(Newton Interpolation),它们可能在面对大量数据时表现得更好。
  3. 采用分段线性插值:对于超过一定数量的数据点,可以考虑采用分段线性插值的方法。这种方法可以将数据集分为若干段,每段内部使用线性插值,段与段之间使用线性连接。这样可以降低插值过程中的振荡。
  4. 平滑处理:在插值结果上应用平滑滤波器(如高斯滤波器、中值滤波器等),以减少抖动现象。
  5. 限制数据点的数量:如果可能的话,尽量减少需要插值的数据点数量。这可以通过选择合适的采样策略、过滤掉异常值或剔除噪声数据来实现。
    请注意,以上方法并非互斥,可以根据具体情况选择合适的方法进行处理。在实际应用中,可能还需要根据具体需求和性能要求进行调整。
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7609120
  • 这篇博客也不错, 你可以看下输入直角三角形的两个直角边,求三角形的周长和面积,以及两个锐角的度数。结果均保留一位小数。
  • 除此之外, 这篇博客: 第6章 缺失数据中的 【问题三】 对于一份有缺失值的数据,可以采取哪些策略或方法深化对它的了解? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 首先分析数据的类型
    • 1.如果数据量很大删去这些带有缺失值的数据无关紧要的话可以考虑把带有缺失值的数据删去
    • 2.如果缺失的部分是不可或缺的关键部分那样的话这些数据就变成了垃圾数据必须删去
    • 3.如果数据量比较小,并且缺失的数据影响不是特别大,可以考虑填充缺失值,具体的填充方式根据数据的具体含义跟客观规律来定。

    缺失值从数据分布上可被分为三类 (Gelman and Hill 2006, Little and Rubin(2002))

    • missing completely at random (MCAR), missing at random (MAR),and missing not at random (MNAR)。
    • 完全随机缺失(MCAR):某一变量缺失值不依赖于其他任何原因的完全随机缺失
    • 随机缺失(MAR):某一变量的缺失与其他变量相关但与该变量本身的数值不相关
    • 非随机缺失(NMAR):某一变量的缺失和该变量本身的数值相关, e.g.,
    • 仪器的最低检测线:某被检测物质的含量低于该检测线则会产生非随机缺失(left-censored missing)

    当缺失存在时,解决的方法一般有不处理、删除还有缺失值的观测和填充缺失值三种。每种方法在某种特殊的情境下都可能是最优的。例如当数据的规模为3000*3000时存在一个单元的缺失,而且不涉及到时间序列等等前后单元格关联较强的方法,可以直接删除该还有缺失值的观测。例如当你使用的数据挖掘算法或者数据分析算法允许缺失值存在,并且在设计算法的时候就考虑到了存在缺失值的情况下如何挖掘更多的信息,你也可以选择不做处理直接分析含有缺失值的数据。然而可能注意到了,上述的例子有着较大局限性,比如现实生活一般没有缺失如此轻微的数据集,比如我上述假设的算法好像真的根本就是不存在的。所以我们只能考虑填充缺失值这条路。

    # df_d.dropna(axis=1,subset=[(df_d.isna().sum()/(df_d.count()+df_d.isna().sum()).values>0.25))]
    
  • 您还可以看一下 刘建萍老师的人工智能系列课程零基础讲解知识点和实例应用线性回归梯度下降逻辑回归课程中的 讲解机器学中会涉及到的有关数学方面的知识储备有哪些小节, 巩固相关知识点