如何在 Python 中创建带节点的三次样条曲线?

How do you create a cubic spline with knots in Python?

我正在尝试将具有三个节点的三次样条拟合到某些数据以绘制变量的季节性图表。我的 X 数据是一年中的天数(本质上是范围(0,366)),而 y 数据是季节性变量。

如何创建适合数据的具有三个节点的三次样条曲线?

我尝试使用:

    spline = sp.interpolate.interp1d(Xdata, ydata, kind='cubic')

并且:

    spline = CubicSpline(Xdata, ydata, bc_type='periodic')

但是,将这些结果绘制成:

    plt.plot(range(0,366), spline(range(0,366)))

生成我的 ydata 的精确图,其中包含所有可能的噪声。我正在尝试创建适合数据的平滑线。

我的目标是创建一个季节性模型,该模型在第 0 天和第 365 天具有相同的 y(x) 值,并且样条曲线在这些值之间弯曲 3 次。

make_lsq_spline 来自 scipy.interpolate 创建一个 least-squares 样条曲线拟合固定的预定义节点。